From 37f5771699501d954277bd337c5ed6e2c6860105 Mon Sep 17 00:00:00 2001 From: ShivaDahal99 <130563462+ShivaDahal99@users.noreply.github.com> Date: Mon, 22 May 2023 19:19:07 +0200 Subject: [PATCH 01/14] Create TestShiva --- TestShiva | 1 + 1 file changed, 1 insertion(+) create mode 100644 TestShiva diff --git a/TestShiva b/TestShiva new file mode 100644 index 000000000000..8b137891791f --- /dev/null +++ b/TestShiva @@ -0,0 +1 @@ + From baf8d49b81cb576cad1821e05ad11240110958e0 Mon Sep 17 00:00:00 2001 From: ShivaDahal99 <130563462+ShivaDahal99@users.noreply.github.com> Date: Mon, 22 May 2023 19:19:40 +0200 Subject: [PATCH 02/14] Delete TestShiva --- TestShiva | 1 - 1 file changed, 1 deletion(-) delete mode 100644 TestShiva diff --git a/TestShiva b/TestShiva deleted file mode 100644 index 8b137891791f..000000000000 --- a/TestShiva +++ /dev/null @@ -1 +0,0 @@ - From e8c960a1af72223328b46ae986137c3982399c68 Mon Sep 17 00:00:00 2001 From: "e.abouelkomsan" Date: Wed, 7 Jun 2023 21:20:52 +0200 Subject: [PATCH 03/14] Add the maximum subarray sum algorithm --- dynamic_programming/max_sub_array_sum.py | 44 ++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 dynamic_programming/max_sub_array_sum.py diff --git a/dynamic_programming/max_sub_array_sum.py b/dynamic_programming/max_sub_array_sum.py new file mode 100644 index 000000000000..20f935297661 --- /dev/null +++ b/dynamic_programming/max_sub_array_sum.py @@ -0,0 +1,44 @@ +from typing import List + +def max_sub_array_sum(arr: List[int], size: int) -> int: + """ + Finds the maximum sum of a subarray within the given array using Kadane's algorithm. + + Args: + arr (list): The input array of numbers. + size (int): The size of the array. + + Returns: + int: The maximum sum of a subarray within the array. + + Example: + >>> arr = [-2, -3, 4, -1, -2, 5, -3] + >>> max_sub_array_sum(arr, len(arr)) + 6 + In this example, the input array is [-2, -3, 4, -1, -2, 5, -3]. The maximum sum of a subarray + within this array is 6, which corresponds to the subarray [4, -1, -2, 5]. + + >>> arr = [-3, -4, 5, -1, 2, -4, 6, -1] + >>> max_sub_array_sum(arr, len(arr)) + 8 + + References: + https://en.wikipedia.org/wiki/Maximum_subarray_problem + """ + max_till_now = arr[0] + max_ending = 0 + + for i in range(size): + max_ending = max_ending + arr[i] + if max_ending < 0: + max_ending = 0 + elif max_till_now < max_ending: + max_till_now = max_ending + + return max_till_now + + +if __name__ == "__main__": + import doctest + + doctest.testmod() From 0681a2c4a0177db6fde6d2d111646a66b2bed21c Mon Sep 17 00:00:00 2001 From: "e.abouelkomsan" Date: Wed, 7 Jun 2023 21:23:13 +0200 Subject: [PATCH 04/14] Add the sliding window algorithm --- web_programming/sliding_window.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 web_programming/sliding_window.py diff --git a/web_programming/sliding_window.py b/web_programming/sliding_window.py new file mode 100644 index 000000000000..e69de29bb2d1 From bb8d9926284900e8f78e07159a6a2c3b6fd4afc3 Mon Sep 17 00:00:00 2001 From: "e.abouelkomsan" Date: Wed, 7 Jun 2023 21:25:18 +0200 Subject: [PATCH 05/14] Add the sliding window algorithm using generators --- .../sliding_window_using_generators.py | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 web_programming/sliding_window_using_generators.py diff --git a/web_programming/sliding_window_using_generators.py b/web_programming/sliding_window_using_generators.py new file mode 100644 index 000000000000..bb6af3e8cb9b --- /dev/null +++ b/web_programming/sliding_window_using_generators.py @@ -0,0 +1,32 @@ +from typing import List, Generator + +def sliding_window(elements: List[int], window_size: int) -> Generator[List[int], None, None]: + """ + Generate sliding windows of size window_size from the given elements. + + Args: + elements (list): The input list of elements. + window_size (int): The size of the sliding window. + + Returns: + generator: A generator that yields sublists of size window_size. + + Example: + >>> lst = [1, 2, 3, 4, 5, 6, 7, 8] + >>> sw_gen = sliding_window(lst, 3) + >>> print(next(sw_gen)) + [1, 2, 3] + >>> print(next(sw_gen)) + [2, 3, 4] + + References: + https://stackoverflow.com/questions/8269916/what-is-sliding-window-algorithm-examples + """ + if len(elements) <= window_size: + return elements + for i in range(len(elements) - window_size + 1): + yield elements[i:i + window_size] + +if __name__ == "__main__": + import doctest + doctest.testmod() From 7010d7876162eaaf29086a8c9bf6b3c7c83e6cfb Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 7 Jun 2023 19:30:07 +0000 Subject: [PATCH 06/14] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- dynamic_programming/max_sub_array_sum.py | 1 + web_programming/sliding_window_using_generators.py | 13 +++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/dynamic_programming/max_sub_array_sum.py b/dynamic_programming/max_sub_array_sum.py index 20f935297661..10134b94f29c 100644 --- a/dynamic_programming/max_sub_array_sum.py +++ b/dynamic_programming/max_sub_array_sum.py @@ -1,5 +1,6 @@ from typing import List + def max_sub_array_sum(arr: List[int], size: int) -> int: """ Finds the maximum sum of a subarray within the given array using Kadane's algorithm. diff --git a/web_programming/sliding_window_using_generators.py b/web_programming/sliding_window_using_generators.py index bb6af3e8cb9b..71b8657af5a5 100644 --- a/web_programming/sliding_window_using_generators.py +++ b/web_programming/sliding_window_using_generators.py @@ -1,6 +1,9 @@ from typing import List, Generator -def sliding_window(elements: List[int], window_size: int) -> Generator[List[int], None, None]: + +def sliding_window( + elements: List[int], window_size: int +) -> Generator[List[int], None, None]: """ Generate sliding windows of size window_size from the given elements. @@ -18,15 +21,17 @@ def sliding_window(elements: List[int], window_size: int) -> Generator[List[int] [1, 2, 3] >>> print(next(sw_gen)) [2, 3, 4] - + References: - https://stackoverflow.com/questions/8269916/what-is-sliding-window-algorithm-examples + https://stackoverflow.com/questions/8269916/what-is-sliding-window-algorithm-examples """ if len(elements) <= window_size: return elements for i in range(len(elements) - window_size + 1): - yield elements[i:i + window_size] + yield elements[i : i + window_size] + if __name__ == "__main__": import doctest + doctest.testmod() From e5e1eb8c7cd1ba0e7f62e87bd39f803ea8e6300f Mon Sep 17 00:00:00 2001 From: "e.abouelkomsan" Date: Thu, 8 Jun 2023 00:20:35 +0200 Subject: [PATCH 07/14] Pre-commit Changes --- _black_version.py | 1 + dynamic_programming/max_sub_array_sum.py | 44 ------------------------ 2 files changed, 1 insertion(+), 44 deletions(-) create mode 100644 _black_version.py delete mode 100644 dynamic_programming/max_sub_array_sum.py diff --git a/_black_version.py b/_black_version.py new file mode 100644 index 000000000000..86b89cb8833d --- /dev/null +++ b/_black_version.py @@ -0,0 +1 @@ +version = "23.3.0" diff --git a/dynamic_programming/max_sub_array_sum.py b/dynamic_programming/max_sub_array_sum.py deleted file mode 100644 index 20f935297661..000000000000 --- a/dynamic_programming/max_sub_array_sum.py +++ /dev/null @@ -1,44 +0,0 @@ -from typing import List - -def max_sub_array_sum(arr: List[int], size: int) -> int: - """ - Finds the maximum sum of a subarray within the given array using Kadane's algorithm. - - Args: - arr (list): The input array of numbers. - size (int): The size of the array. - - Returns: - int: The maximum sum of a subarray within the array. - - Example: - >>> arr = [-2, -3, 4, -1, -2, 5, -3] - >>> max_sub_array_sum(arr, len(arr)) - 6 - In this example, the input array is [-2, -3, 4, -1, -2, 5, -3]. The maximum sum of a subarray - within this array is 6, which corresponds to the subarray [4, -1, -2, 5]. - - >>> arr = [-3, -4, 5, -1, 2, -4, 6, -1] - >>> max_sub_array_sum(arr, len(arr)) - 8 - - References: - https://en.wikipedia.org/wiki/Maximum_subarray_problem - """ - max_till_now = arr[0] - max_ending = 0 - - for i in range(size): - max_ending = max_ending + arr[i] - if max_ending < 0: - max_ending = 0 - elif max_till_now < max_ending: - max_till_now = max_ending - - return max_till_now - - -if __name__ == "__main__": - import doctest - - doctest.testmod() From 2bdff9ba23d2605e5bd58f93be3659e53780e625 Mon Sep 17 00:00:00 2001 From: "e.abouelkomsan" Date: Thu, 8 Jun 2023 00:31:24 +0200 Subject: [PATCH 08/14] Format Fixing --- dynamic_programming/max_subarray_sum.py | 43 +++++++++++++++++++ .../sliding_window_using_generators.py | 17 +++++--- 2 files changed, 54 insertions(+), 6 deletions(-) create mode 100644 dynamic_programming/max_subarray_sum.py diff --git a/dynamic_programming/max_subarray_sum.py b/dynamic_programming/max_subarray_sum.py new file mode 100644 index 000000000000..be1a42152684 --- /dev/null +++ b/dynamic_programming/max_subarray_sum.py @@ -0,0 +1,43 @@ +def max_sub_array_sum(arr: list[int], size: int) -> int: + """ + Finds the maximum sum of a subarray within the given array using Kadane's algorithm. + + Args: + arr (list): The input array of numbers. + size (int): The size of the array. + + Returns: + int: The maximum sum of a subarray within the array. + + Example: + >>> arr = [-2, -3, 4, -1, -2, 5, -3] + >>> max_sub_array_sum(arr, len(arr)) + 6 + In this example, the input array is [-2, -3, 4, -1, -2, 5, -3]. + The maximum sum of a subarray within this array is 6, + which corresponds to the subarray [4, -1, -2, 5]. + + >>> arr = [-3, -4, 5, -1, 2, -4, 6, -1] + >>> max_sub_array_sum(arr, len(arr)) + 8 + + References: + https://en.wikipedia.org/wiki/Maximum_subarray_problem + """ + max_till_now = arr[0] + max_ending = 0 + + for i in range(size): + max_ending = max_ending + arr[i] + if max_ending < 0: + max_ending = 0 + elif max_till_now < max_ending: + max_till_now = max_ending + + return max_till_now + + +if __name__ == "__main__": + import doctest + + doctest.testmod() diff --git a/web_programming/sliding_window_using_generators.py b/web_programming/sliding_window_using_generators.py index bb6af3e8cb9b..217396236db5 100644 --- a/web_programming/sliding_window_using_generators.py +++ b/web_programming/sliding_window_using_generators.py @@ -1,6 +1,9 @@ -from typing import List, Generator +from collections.abc import Generator -def sliding_window(elements: List[int], window_size: int) -> Generator[List[int], None, None]: + +def sliding_window( + elements: list[int], window_size: int +) -> Generator[list[int], None, None]: """ Generate sliding windows of size window_size from the given elements. @@ -18,15 +21,17 @@ def sliding_window(elements: List[int], window_size: int) -> Generator[List[int] [1, 2, 3] >>> print(next(sw_gen)) [2, 3, 4] - + References: - https://stackoverflow.com/questions/8269916/what-is-sliding-window-algorithm-examples + https://stackoverflow.com/questions/8269916/what-is-sliding-window-algorithm-examples """ if len(elements) <= window_size: - return elements + yield elements for i in range(len(elements) - window_size + 1): - yield elements[i:i + window_size] + yield elements[i : i + window_size] + if __name__ == "__main__": import doctest + doctest.testmod() From 124a0e20ce01e9236d055cf471804ad53421ae84 Mon Sep 17 00:00:00 2001 From: "e.abouelkomsan" Date: Thu, 8 Jun 2023 00:54:39 +0200 Subject: [PATCH 09/14] rename files --- dynamic_programming/{max_subarray_sum.py => max_sub_array_sum.py} | 0 ...ng_window_using_generators.py => sliding_window_generators.py} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename dynamic_programming/{max_subarray_sum.py => max_sub_array_sum.py} (100%) rename web_programming/{sliding_window_using_generators.py => sliding_window_generators.py} (100%) diff --git a/dynamic_programming/max_subarray_sum.py b/dynamic_programming/max_sub_array_sum.py similarity index 100% rename from dynamic_programming/max_subarray_sum.py rename to dynamic_programming/max_sub_array_sum.py diff --git a/web_programming/sliding_window_using_generators.py b/web_programming/sliding_window_generators.py similarity index 100% rename from web_programming/sliding_window_using_generators.py rename to web_programming/sliding_window_generators.py From 8339368005e85ec4c1f09b904ef5b25628b36f35 Mon Sep 17 00:00:00 2001 From: "e.abouelkomsan" Date: Thu, 8 Jun 2023 01:17:03 +0200 Subject: [PATCH 10/14] Add black version --- black-23.3.0.dist-info/INSTALLER | 1 + black-23.3.0.dist-info/METADATA | 1661 ++++++++++++++++++++ black-23.3.0.dist-info/RECORD | 118 ++ black-23.3.0.dist-info/REQUESTED | 0 black-23.3.0.dist-info/WHEEL | 4 + black-23.3.0.dist-info/entry_points.txt | 3 + black-23.3.0.dist-info/licenses/AUTHORS.md | 195 +++ black-23.3.0.dist-info/licenses/LICENSE | 21 + black.exe | Bin 0 -> 108472 bytes 9 files changed, 2003 insertions(+) create mode 100644 black-23.3.0.dist-info/INSTALLER create mode 100644 black-23.3.0.dist-info/METADATA create mode 100644 black-23.3.0.dist-info/RECORD create mode 100644 black-23.3.0.dist-info/REQUESTED create mode 100644 black-23.3.0.dist-info/WHEEL create mode 100644 black-23.3.0.dist-info/entry_points.txt create mode 100644 black-23.3.0.dist-info/licenses/AUTHORS.md create mode 100644 black-23.3.0.dist-info/licenses/LICENSE create mode 100644 black.exe diff --git a/black-23.3.0.dist-info/INSTALLER b/black-23.3.0.dist-info/INSTALLER new file mode 100644 index 000000000000..a1b589e38a32 --- /dev/null +++ b/black-23.3.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/black-23.3.0.dist-info/METADATA b/black-23.3.0.dist-info/METADATA new file mode 100644 index 000000000000..f75a268f5ffd --- /dev/null +++ b/black-23.3.0.dist-info/METADATA @@ -0,0 +1,1661 @@ +Metadata-Version: 2.1 +Name: black +Version: 23.3.0 +Summary: The uncompromising code formatter. +Project-URL: Changelog, https://github.com/psf/black/blob/main/CHANGES.md +Project-URL: Homepage, https://github.com/psf/black +Author-email: Łukasz Langa +License: MIT +License-File: AUTHORS.md +License-File: LICENSE +Keywords: automation,autopep8,formatter,gofmt,pyfmt,rustfmt,yapf +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Console +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: MIT License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 :: Only +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Topic :: Software Development :: Quality Assurance +Requires-Python: >=3.7 +Requires-Dist: click>=8.0.0 +Requires-Dist: mypy-extensions>=0.4.3 +Requires-Dist: packaging>=22.0 +Requires-Dist: pathspec>=0.9.0 +Requires-Dist: platformdirs>=2 +Requires-Dist: tomli>=1.1.0; python_version < '3.11' +Requires-Dist: typed-ast>=1.4.2; python_version < '3.8' and implementation_name == 'cpython' +Requires-Dist: typing-extensions>=3.10.0.0; python_version < '3.10' +Provides-Extra: colorama +Requires-Dist: colorama>=0.4.3; extra == 'colorama' +Provides-Extra: d +Requires-Dist: aiohttp>=3.7.4; extra == 'd' +Provides-Extra: jupyter +Requires-Dist: ipython>=7.8.0; extra == 'jupyter' +Requires-Dist: tokenize-rt>=3.2.0; extra == 'jupyter' +Provides-Extra: uvloop +Requires-Dist: uvloop>=0.15.2; extra == 'uvloop' +Description-Content-Type: text/markdown + +[![Black Logo](https://raw.githubusercontent.com/psf/black/main/docs/_static/logo2-readme.png)](https://black.readthedocs.io/en/stable/) + +

The Uncompromising Code Formatter

+ +

+Actions Status +Documentation Status +Coverage Status +License: MIT +PyPI +Downloads +conda-forge +Code style: black +

+ +> “Any color you like.” + +_Black_ is the uncompromising Python code formatter. By using it, you agree to cede +control over minutiae of hand-formatting. In return, _Black_ gives you speed, +determinism, and freedom from `pycodestyle` nagging about formatting. You will save time +and mental energy for more important matters. + +Blackened code looks the same regardless of the project you're reading. Formatting +becomes transparent after a while and you can focus on the content instead. + +_Black_ makes code review faster by producing the smallest diffs possible. + +Try it out now using the [Black Playground](https://black.vercel.app). Watch the +[PyCon 2019 talk](https://youtu.be/esZLCuWs_2Y) to learn more. + +--- + +**[Read the documentation on ReadTheDocs!](https://black.readthedocs.io/en/stable)** + +--- + +## Installation and usage + +### Installation + +_Black_ can be installed by running `pip install black`. It requires Python 3.7+ to run. +If you want to format Jupyter Notebooks, install with `pip install "black[jupyter]"`. + +If you can't wait for the latest _hotness_ and want to install from GitHub, use: + +`pip install git+https://github.com/psf/black` + +### Usage + +To get started right away with sensible defaults: + +```sh +black {source_file_or_directory} +``` + +You can run _Black_ as a package if running it as a script doesn't work: + +```sh +python -m black {source_file_or_directory} +``` + +Further information can be found in our docs: + +- [Usage and Configuration](https://black.readthedocs.io/en/stable/usage_and_configuration/index.html) + +_Black_ is already [successfully used](https://github.com/psf/black#used-by) by many +projects, small and big. _Black_ has a comprehensive test suite, with efficient parallel +tests, and our own auto formatting and parallel Continuous Integration runner. Now that +we have become stable, you should not expect large formatting changes in the future. +Stylistic changes will mostly be responses to bug reports and support for new Python +syntax. For more information please refer to the +[The Black Code Style](https://black.readthedocs.io/en/stable/the_black_code_style/index.html). + +Also, as a safety measure which slows down processing, _Black_ will check that the +reformatted code still produces a valid AST that is effectively equivalent to the +original (see the +[Pragmatism](https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html#ast-before-and-after-formatting) +section for details). If you're feeling confident, use `--fast`. + +## The _Black_ code style + +_Black_ is a PEP 8 compliant opinionated formatter. _Black_ reformats entire files in +place. Style configuration options are deliberately limited and rarely added. It doesn't +take previous formatting into account (see +[Pragmatism](https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html#pragmatism) +for exceptions). + +Our documentation covers the current _Black_ code style, but planned changes to it are +also documented. They're both worth taking a look: + +- [The _Black_ Code Style: Current style](https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html) +- [The _Black_ Code Style: Future style](https://black.readthedocs.io/en/stable/the_black_code_style/future_style.html) + +Changes to the _Black_ code style are bound by the Stability Policy: + +- [The _Black_ Code Style: Stability Policy](https://black.readthedocs.io/en/stable/the_black_code_style/index.html#stability-policy) + +Please refer to this document before submitting an issue. What seems like a bug might be +intended behaviour. + +### Pragmatism + +Early versions of _Black_ used to be absolutist in some respects. They took after its +initial author. This was fine at the time as it made the implementation simpler and +there were not many users anyway. Not many edge cases were reported. As a mature tool, +_Black_ does make some exceptions to rules it otherwise holds. + +- [The _Black_ code style: Pragmatism](https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html#pragmatism) + +Please refer to this document before submitting an issue just like with the document +above. What seems like a bug might be intended behaviour. + +## Configuration + +_Black_ is able to read project-specific default values for its command line options +from a `pyproject.toml` file. This is especially useful for specifying custom +`--include` and `--exclude`/`--force-exclude`/`--extend-exclude` patterns for your +project. + +You can find more details in our documentation: + +- [The basics: Configuration via a file](https://black.readthedocs.io/en/stable/usage_and_configuration/the_basics.html#configuration-via-a-file) + +And if you're looking for more general configuration documentation: + +- [Usage and Configuration](https://black.readthedocs.io/en/stable/usage_and_configuration/index.html) + +**Pro-tip**: If you're asking yourself "Do I need to configure anything?" the answer is +"No". _Black_ is all about sensible defaults. Applying those defaults will have your +code in compliance with many other _Black_ formatted projects. + +## Used by + +The following notable open-source projects trust _Black_ with enforcing a consistent +code style: pytest, tox, Pyramid, Django, Django Channels, Hypothesis, attrs, +SQLAlchemy, Poetry, PyPA applications (Warehouse, Bandersnatch, Pipenv, virtualenv), +pandas, Pillow, Twisted, LocalStack, every Datadog Agent Integration, Home Assistant, +Zulip, Kedro, OpenOA, FLORIS, ORBIT, WOMBAT, and many more. + +The following organizations use _Black_: Facebook, Dropbox, KeepTruckin, Mozilla, Quora, +Duolingo, QuantumBlack, Tesla, Archer Aviation. + +Are we missing anyone? Let us know. + +## Testimonials + +**Mike Bayer**, [author of `SQLAlchemy`](https://www.sqlalchemy.org/): + +> I can't think of any single tool in my entire programming career that has given me a +> bigger productivity increase by its introduction. I can now do refactorings in about +> 1% of the keystrokes that it would have taken me previously when we had no way for +> code to format itself. + +**Dusty Phillips**, +[writer](https://smile.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=dusty+phillips): + +> _Black_ is opinionated so you don't have to be. + +**Hynek Schlawack**, [creator of `attrs`](https://www.attrs.org/), core developer of +Twisted and CPython: + +> An auto-formatter that doesn't suck is all I want for Xmas! + +**Carl Meyer**, [Django](https://www.djangoproject.com/) core developer: + +> At least the name is good. + +**Kenneth Reitz**, creator of [`requests`](https://requests.readthedocs.io/en/latest/) +and [`pipenv`](https://readthedocs.org/projects/pipenv/): + +> This vastly improves the formatting of our code. Thanks a ton! + +## Show your style + +Use the badge in your project's README.md: + +```md +[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) +``` + +Using the badge in README.rst: + +``` +.. image:: https://img.shields.io/badge/code%20style-black-000000.svg + :target: https://github.com/psf/black +``` + +Looks like this: +[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) + +## License + +MIT + +## Contributing + +Welcome! Happy to see you willing to make the project better. You can get started by +reading this: + +- [Contributing: The basics](https://black.readthedocs.io/en/latest/contributing/the_basics.html) + +You can also take a look at the rest of the contributing docs or talk with the +developers: + +- [Contributing documentation](https://black.readthedocs.io/en/latest/contributing/index.html) +- [Chat on Discord](https://discord.gg/RtVdv86PrH) + +## Change log + +The log has become rather long. It moved to its own file. + +See [CHANGES](https://black.readthedocs.io/en/latest/change_log.html). + +## Authors + +The author list is quite long nowadays, so it lives in its own file. + +See [AUTHORS.md](./AUTHORS.md) + +## Code of Conduct + +Everyone participating in the _Black_ project, and in particular in the issue tracker, +pull requests, and social media activity, is expected to treat other people with respect +and more generally to follow the guidelines articulated in the +[Python Community Code of Conduct](https://www.python.org/psf/codeofconduct/). + +At the same time, humor is encouraged. In fact, basic familiarity with Monty Python's +Flying Circus is expected. We are not savages. + +And if you _really_ need to slap somebody, do it with a fish while dancing. +# Change Log + +## Unreleased + +### Highlights + + + +### Stable style + + + +### Preview style + + + +### Configuration + + + +### Packaging + + + +### Parser + + + +### Performance + + + +### Output + + + +### _Blackd_ + + + +### Integrations + + + +### Documentation + + + +## 23.3.0 + +### Highlights + +This release fixes a longstanding confusing behavior in Black's GitHub action, where the +version of the action did not determine the version of Black being run (issue #3382). In +addition, there is a small bug fix around imports and a number of improvements to the +preview style. + +Please try out the +[preview style](https://black.readthedocs.io/en/stable/the_black_code_style/future_style.html#preview-style) +with `black --preview` and tell us your feedback. All changes in the preview style are +expected to become part of Black's stable style in January 2024. + +### Stable style + +- Import lines with `# fmt: skip` and `# fmt: off` no longer have an extra blank line + added when they are right after another import line (#3610) + +### Preview style + +- Add trailing commas to collection literals even if there's a comment after the last + entry (#3393) +- `async def`, `async for`, and `async with` statements are now formatted consistently + compared to their non-async version. (#3609) +- `with` statements that contain two context managers will be consistently wrapped in + parentheses (#3589) +- Let string splitters respect [East Asian Width](https://www.unicode.org/reports/tr11/) + (#3445) +- Now long string literals can be split after East Asian commas and periods (`、` U+3001 + IDEOGRAPHIC COMMA, `。` U+3002 IDEOGRAPHIC FULL STOP, & `,` U+FF0C FULLWIDTH COMMA) + besides before spaces (#3445) +- For stubs, enforce one blank line after a nested class with a body other than just + `...` (#3564) +- Improve handling of multiline strings by changing line split behavior (#1879) + +### Parser + +- Added support for formatting files with invalid type comments (#3594) + +### Integrations + +- Update GitHub Action to use the version of Black equivalent to action's version if + version input is not specified (#3543) +- Fix missing Python binary path in autoload script for vim (#3508) + +### Documentation + +- Document that only the most recent release is supported for security issues; + vulnerabilities should be reported through Tidelift (#3612) + +## 23.1.0 + +### Highlights + +This is the first release of 2023, and following our +[stability policy](https://black.readthedocs.io/en/stable/the_black_code_style/index.html#stability-policy), +it comes with a number of improvements to our stable style, including improvements to +empty line handling, removal of redundant parentheses in several contexts, and output +that highlights implicitly concatenated strings better. + +There are also many changes to the preview style; try out `black --preview` and give us +feedback to help us set the stable style for next year. + +In addition to style changes, Black now automatically infers the supported Python +versions from your `pyproject.toml` file, removing the need to set Black's target +versions separately. + +### Stable style + + + +- Introduce the 2023 stable style, which incorporates most aspects of last year's + preview style (#3418). Specific changes: + - Enforce empty lines before classes and functions with sticky leading comments + (#3302) (22.12.0) + - Reformat empty and whitespace-only files as either an empty file (if no newline is + present) or as a single newline character (if a newline is present) (#3348) + (22.12.0) + - Implicitly concatenated strings used as function args are now wrapped inside + parentheses (#3307) (22.12.0) + - Correctly handle trailing commas that are inside a line's leading non-nested parens + (#3370) (22.12.0) + - `--skip-string-normalization` / `-S` now prevents docstring prefixes from being + normalized as expected (#3168) (since 22.8.0) + - When using `--skip-magic-trailing-comma` or `-C`, trailing commas are stripped from + subscript expressions with more than 1 element (#3209) (22.8.0) + - Implicitly concatenated strings inside a list, set, or tuple are now wrapped inside + parentheses (#3162) (22.8.0) + - Fix a string merging/split issue when a comment is present in the middle of + implicitly concatenated strings on its own line (#3227) (22.8.0) + - Docstring quotes are no longer moved if it would violate the line length limit + (#3044, #3430) (22.6.0) + - Parentheses around return annotations are now managed (#2990) (22.6.0) + - Remove unnecessary parentheses around awaited objects (#2991) (22.6.0) + - Remove unnecessary parentheses in `with` statements (#2926) (22.6.0) + - Remove trailing newlines after code block open (#3035) (22.6.0) + - Code cell separators `#%%` are now standardised to `# %%` (#2919) (22.3.0) + - Remove unnecessary parentheses from `except` statements (#2939) (22.3.0) + - Remove unnecessary parentheses from tuple unpacking in `for` loops (#2945) (22.3.0) + - Avoid magic-trailing-comma in single-element subscripts (#2942) (22.3.0) +- Fix a crash when a colon line is marked between `# fmt: off` and `# fmt: on` (#3439) + +### Preview style + + + +- Format hex codes in unicode escape sequences in string literals (#2916) +- Add parentheses around `if`-`else` expressions (#2278) +- Improve performance on large expressions that contain many strings (#3467) +- Fix a crash in preview style with assert + parenthesized string (#3415) +- Fix crashes in preview style with walrus operators used in function return annotations + and except clauses (#3423) +- Fix a crash in preview advanced string processing where mixed implicitly concatenated + regular and f-strings start with an empty span (#3463) +- Fix a crash in preview advanced string processing where a standalone comment is placed + before a dict's value (#3469) +- Fix an issue where extra empty lines are added when a decorator has `# fmt: skip` + applied or there is a standalone comment between decorators (#3470) +- Do not put the closing quotes in a docstring on a separate line, even if the line is + too long (#3430) +- Long values in dict literals are now wrapped in parentheses; correspondingly + unnecessary parentheses around short values in dict literals are now removed; long + string lambda values are now wrapped in parentheses (#3440) +- Fix two crashes in preview style involving edge cases with docstrings (#3451) +- Exclude string type annotations from improved string processing; fix crash when the + return type annotation is stringified and spans across multiple lines (#3462) +- Wrap multiple context managers in parentheses when targeting Python 3.9+ (#3489) +- Fix several crashes in preview style with walrus operators used in `with` statements + or tuples (#3473) +- Fix an invalid quote escaping bug in f-string expressions where it produced invalid + code. Implicitly concatenated f-strings with different quotes can now be merged or + quote-normalized by changing the quotes used in expressions. (#3509) +- Fix crash on `await (yield)` when Black is compiled with mypyc (#3533) + +### Configuration + + + +- Black now tries to infer its `--target-version` from the project metadata specified in + `pyproject.toml` (#3219) + +### Packaging + + + +- Upgrade mypyc from `0.971` to `0.991` so mypycified _Black_ can be built on armv7 + (#3380) + - This also fixes some crashes while using compiled Black with a debug build of + CPython +- Drop specific support for the `tomli` requirement on 3.11 alpha releases, working + around a bug that would cause the requirement not to be installed on any non-final + Python releases (#3448) +- Black now depends on `packaging` version `22.0` or later. This is required for new + functionality that needs to parse part of the project metadata (#3219) + +### Output + + + +- Calling `black --help` multiple times will return the same help contents each time + (#3516) +- Verbose logging now shows the values of `pyproject.toml` configuration variables + (#3392) +- Fix false symlink detection messages in verbose output due to using an incorrect + relative path to the project root (#3385) + +### Integrations + + + +- Move 3.11 CI to normal flow now that all dependencies support 3.11 (#3446) +- Docker: Add new `latest_prerelease` tag automation to follow latest black alpha + release on docker images (#3465) + +### Documentation + + + +- Expand `vim-plug` installation instructions to offer more explicit options (#3468) + +## 22.12.0 + +### Preview style + + + +- Enforce empty lines before classes and functions with sticky leading comments (#3302) +- Reformat empty and whitespace-only files as either an empty file (if no newline is + present) or as a single newline character (if a newline is present) (#3348) +- Implicitly concatenated strings used as function args are now wrapped inside + parentheses (#3307) +- For assignment statements, prefer splitting the right hand side if the left hand side + fits on a single line (#3368) +- Correctly handle trailing commas that are inside a line's leading non-nested parens + (#3370) + +### Configuration + + + +- Fix incorrectly applied `.gitignore` rules by considering the `.gitignore` location + and the relative path to the target file (#3338) +- Fix incorrectly ignoring `.gitignore` presence when more than one source directory is + specified (#3336) + +### Parser + + + +- Parsing support has been added for walruses inside generator expression that are + passed as function args (for example, + `any(match := my_re.match(text) for text in texts)`) (#3327). + +### Integrations + + + +- Vim plugin: Optionally allow using the system installation of Black via + `let g:black_use_virtualenv = 0`(#3309) + +## 22.10.0 + +### Highlights + +- Runtime support for Python 3.6 has been removed. Formatting 3.6 code will still be + supported until further notice. + +### Stable style + +- Fix a crash when `# fmt: on` is used on a different block level than `# fmt: off` + (#3281) + +### Preview style + +- Fix a crash when formatting some dicts with parenthesis-wrapped long string keys + (#3262) + +### Configuration + +- `.ipynb_checkpoints` directories are now excluded by default (#3293) +- Add `--skip-source-first-line` / `-x` option to ignore the first line of source code + while formatting (#3299) + +### Packaging + +- Executables made with PyInstaller will no longer crash when formatting several files + at once on macOS. Native x86-64 executables for macOS are available once again. + (#3275) +- Hatchling is now used as the build backend. This will not have any effect for users + who install Black with its wheels from PyPI. (#3233) +- Faster compiled wheels are now available for CPython 3.11 (#3276) + +### _Blackd_ + +- Windows style (CRLF) newlines will be preserved (#3257). + +### Integrations + +- Vim plugin: add flag (`g:black_preview`) to enable/disable the preview style (#3246) +- Update GitHub Action to support formatting of Jupyter Notebook files via a `jupyter` + option (#3282) +- Update GitHub Action to support use of version specifiers (e.g. `<23`) for Black + version (#3265) + +## 22.8.0 + +### Highlights + +- Python 3.11 is now supported, except for _blackd_ as aiohttp does not support 3.11 as + of publishing (#3234) +- This is the last release that supports running _Black_ on Python 3.6 (formatting 3.6 + code will continue to be supported until further notice) +- Reword the stability policy to say that we may, in rare cases, make changes that + affect code that was not previously formatted by _Black_ (#3155) + +### Stable style + +- Fix an infinite loop when using `# fmt: on/off` in the middle of an expression or code + block (#3158) +- Fix incorrect handling of `# fmt: skip` on colon (`:`) lines (#3148) +- Comments are no longer deleted when a line had spaces removed around power operators + (#2874) + +### Preview style + +- Single-character closing docstring quotes are no longer moved to their own line as + this is invalid. This was a bug introduced in version 22.6.0. (#3166) +- `--skip-string-normalization` / `-S` now prevents docstring prefixes from being + normalized as expected (#3168) +- When using `--skip-magic-trailing-comma` or `-C`, trailing commas are stripped from + subscript expressions with more than 1 element (#3209) +- Implicitly concatenated strings inside a list, set, or tuple are now wrapped inside + parentheses (#3162) +- Fix a string merging/split issue when a comment is present in the middle of implicitly + concatenated strings on its own line (#3227) + +### _Blackd_ + +- `blackd` now supports enabling the preview style via the `X-Preview` header (#3217) + +### Configuration + +- Black now uses the presence of debug f-strings to detect target version (#3215) +- Fix misdetection of project root and verbose logging of sources in cases involving + `--stdin-filename` (#3216) +- Immediate `.gitignore` files in source directories given on the command line are now + also respected, previously only `.gitignore` files in the project root and + automatically discovered directories were respected (#3237) + +### Documentation + +- Recommend using BlackConnect in IntelliJ IDEs (#3150) + +### Integrations + +- Vim plugin: prefix messages with `Black: ` so it's clear they come from Black (#3194) +- Docker: changed to a /opt/venv installation + added to PATH to be available to + non-root users (#3202) + +### Output + +- Change from deprecated `asyncio.get_event_loop()` to create our event loop which + removes DeprecationWarning (#3164) +- Remove logging from internal `blib2to3` library since it regularly emits error logs + about failed caching that can and should be ignored (#3193) + +### Parser + +- Type comments are now included in the AST equivalence check consistently so accidental + deletion raises an error. Though type comments can't be tracked when running on PyPy + 3.7 due to standard library limitations. (#2874) + +### Performance + +- Reduce Black's startup time when formatting a single file by 15-30% (#3211) + +## 22.6.0 + +### Style + +- Fix unstable formatting involving `#fmt: skip` and `# fmt:skip` comments (notice the + lack of spaces) (#2970) + +### Preview style + +- Docstring quotes are no longer moved if it would violate the line length limit (#3044) +- Parentheses around return annotations are now managed (#2990) +- Remove unnecessary parentheses around awaited objects (#2991) +- Remove unnecessary parentheses in `with` statements (#2926) +- Remove trailing newlines after code block open (#3035) + +### Integrations + +- Add `scripts/migrate-black.py` script to ease introduction of Black to a Git project + (#3038) + +### Output + +- Output Python version and implementation as part of `--version` flag (#2997) + +### Packaging + +- Use `tomli` instead of `tomllib` on Python 3.11 builds where `tomllib` is not + available (#2987) + +### Parser + +- [PEP 654](https://peps.python.org/pep-0654/#except) syntax (for example, + `except *ExceptionGroup:`) is now supported (#3016) +- [PEP 646](https://peps.python.org/pep-0646) syntax (for example, + `Array[Batch, *Shape]` or `def fn(*args: *T) -> None`) is now supported (#3071) + +### Vim Plugin + +- Fix `strtobool` function. It didn't parse true/on/false/off. (#3025) + +## 22.3.0 + +### Preview style + +- Code cell separators `#%%` are now standardised to `# %%` (#2919) +- Remove unnecessary parentheses from `except` statements (#2939) +- Remove unnecessary parentheses from tuple unpacking in `for` loops (#2945) +- Avoid magic-trailing-comma in single-element subscripts (#2942) + +### Configuration + +- Do not format `__pypackages__` directories by default (#2836) +- Add support for specifying stable version with `--required-version` (#2832). +- Avoid crashing when the user has no homedir (#2814) +- Avoid crashing when md5 is not available (#2905) +- Fix handling of directory junctions on Windows (#2904) + +### Documentation + +- Update pylint config documentation (#2931) + +### Integrations + +- Move test to disable plugin in Vim/Neovim, which speeds up loading (#2896) + +### Output + +- In verbose mode, log when _Black_ is using user-level config (#2861) + +### Packaging + +- Fix Black to work with Click 8.1.0 (#2966) +- On Python 3.11 and newer, use the standard library's `tomllib` instead of `tomli` + (#2903) +- `black-primer`, the deprecated internal devtool, has been removed and copied to a + [separate repository](https://github.com/cooperlees/black-primer) (#2924) + +### Parser + +- Black can now parse starred expressions in the target of `for` and `async for` + statements, e.g `for item in *items_1, *items_2: pass` (#2879). + +## 22.1.0 + +At long last, _Black_ is no longer a beta product! This is the first non-beta release +and the first release covered by our new +[stability policy](https://black.readthedocs.io/en/stable/the_black_code_style/index.html#stability-policy). + +### Highlights + +- **Remove Python 2 support** (#2740) +- Introduce the `--preview` flag (#2752) + +### Style + +- Deprecate `--experimental-string-processing` and move the functionality under + `--preview` (#2789) +- For stubs, one blank line between class attributes and methods is now kept if there's + at least one pre-existing blank line (#2736) +- Black now normalizes string prefix order (#2297) +- Remove spaces around power operators if both operands are simple (#2726) +- Work around bug that causes unstable formatting in some cases in the presence of the + magic trailing comma (#2807) +- Use parentheses for attribute access on decimal float and int literals (#2799) +- Don't add whitespace for attribute access on hexadecimal, binary, octal, and complex + literals (#2799) +- Treat blank lines in stubs the same inside top-level `if` statements (#2820) +- Fix unstable formatting with semicolons and arithmetic expressions (#2817) +- Fix unstable formatting around magic trailing comma (#2572) + +### Parser + +- Fix mapping cases that contain as-expressions, like `case {"key": 1 | 2 as password}` + (#2686) +- Fix cases that contain multiple top-level as-expressions, like `case 1 as a, 2 as b` + (#2716) +- Fix call patterns that contain as-expressions with keyword arguments, like + `case Foo(bar=baz as quux)` (#2749) +- Tuple unpacking on `return` and `yield` constructs now implies 3.8+ (#2700) +- Unparenthesized tuples on annotated assignments (e.g + `values: Tuple[int, ...] = 1, 2, 3`) now implies 3.8+ (#2708) +- Fix handling of standalone `match()` or `case()` when there is a trailing newline or a + comment inside of the parentheses. (#2760) +- `from __future__ import annotations` statement now implies Python 3.7+ (#2690) + +### Performance + +- Speed-up the new backtracking parser about 4X in general (enabled when + `--target-version` is set to 3.10 and higher). (#2728) +- _Black_ is now compiled with [mypyc](https://github.com/mypyc/mypyc) for an overall 2x + speed-up. 64-bit Windows, MacOS, and Linux (not including musl) are supported. (#1009, + #2431) + +### Configuration + +- Do not accept bare carriage return line endings in pyproject.toml (#2408) +- Add configuration option (`python-cell-magics`) to format cells with custom magics in + Jupyter Notebooks (#2744) +- Allow setting custom cache directory on all platforms with environment variable + `BLACK_CACHE_DIR` (#2739). +- Enable Python 3.10+ by default, without any extra need to specify + `--target-version=py310`. (#2758) +- Make passing `SRC` or `--code` mandatory and mutually exclusive (#2804) + +### Output + +- Improve error message for invalid regular expression (#2678) +- Improve error message when parsing fails during AST safety check by embedding the + underlying SyntaxError (#2693) +- No longer color diff headers white as it's unreadable in light themed terminals + (#2691) +- Text coloring added in the final statistics (#2712) +- Verbose mode also now describes how a project root was discovered and which paths will + be formatted. (#2526) + +### Packaging + +- All upper version bounds on dependencies have been removed (#2718) +- `typing-extensions` is no longer a required dependency in Python 3.10+ (#2772) +- Set `click` lower bound to `8.0.0` (#2791) + +### Integrations + +- Update GitHub action to support containerized runs (#2748) + +### Documentation + +- Change protocol in pip installation instructions to `https://` (#2761) +- Change HTML theme to Furo primarily for its responsive design and mobile support + (#2793) +- Deprecate the `black-primer` tool (#2809) +- Document Python support policy (#2819) + +## 21.12b0 + +### _Black_ + +- Fix determination of f-string expression spans (#2654) +- Fix bad formatting of error messages about EOF in multi-line statements (#2343) +- Functions and classes in blocks now have more consistent surrounding spacing (#2472) + +#### Jupyter Notebook support + +- Cell magics are now only processed if they are known Python cell magics. Earlier, all + cell magics were tokenized, leading to possible indentation errors e.g. with + `%%writefile`. (#2630) +- Fix assignment to environment variables in Jupyter Notebooks (#2642) + +#### Python 3.10 support + +- Point users to using `--target-version py310` if we detect 3.10-only syntax (#2668) +- Fix `match` statements with open sequence subjects, like `match a, b:` or + `match a, *b:` (#2639) (#2659) +- Fix `match`/`case` statements that contain `match`/`case` soft keywords multiple + times, like `match re.match()` (#2661) +- Fix `case` statements with an inline body (#2665) +- Fix styling of starred expressions inside `match` subject (#2667) +- Fix parser error location on invalid syntax in a `match` statement (#2649) +- Fix Python 3.10 support on platforms without ProcessPoolExecutor (#2631) +- Improve parsing performance on code that uses `match` under `--target-version py310` + up to ~50% (#2670) + +### Packaging + +- Remove dependency on `regex` (#2644) (#2663) + +## 21.11b1 + +### _Black_ + +- Bumped regex version minimum to 2021.4.4 to fix Pattern class usage (#2621) + +## 21.11b0 + +### _Black_ + +- Warn about Python 2 deprecation in more cases by improving Python 2 only syntax + detection (#2592) +- Add experimental PyPy support (#2559) +- Add partial support for the match statement. As it's experimental, it's only enabled + when `--target-version py310` is explicitly specified (#2586) +- Add support for parenthesized with (#2586) +- Declare support for Python 3.10 for running Black (#2562) + +### Integrations + +- Fixed vim plugin with Python 3.10 by removing deprecated distutils import (#2610) +- The vim plugin now parses `skip_magic_trailing_comma` from pyproject.toml (#2613) + +## 21.10b0 + +### _Black_ + +- Document stability policy, that will apply for non-beta releases (#2529) +- Add new `--workers` parameter (#2514) +- Fixed feature detection for positional-only arguments in lambdas (#2532) +- Bumped typed-ast version minimum to 1.4.3 for 3.10 compatibility (#2519) +- Fixed a Python 3.10 compatibility issue where the loop argument was still being passed + even though it has been removed (#2580) +- Deprecate Python 2 formatting support (#2523) + +### _Blackd_ + +- Remove dependency on aiohttp-cors (#2500) +- Bump required aiohttp version to 3.7.4 (#2509) + +### _Black-Primer_ + +- Add primer support for --projects (#2555) +- Print primer summary after individual failures (#2570) + +### Integrations + +- Allow to pass `target_version` in the vim plugin (#1319) +- Install build tools in docker file and use multi-stage build to keep the image size + down (#2582) + +## 21.9b0 + +### Packaging + +- Fix missing modules in self-contained binaries (#2466) +- Fix missing toml extra used during installation (#2475) + +## 21.8b0 + +### _Black_ + +- Add support for formatting Jupyter Notebook files (#2357) +- Move from `appdirs` dependency to `platformdirs` (#2375) +- Present a more user-friendly error if .gitignore is invalid (#2414) +- The failsafe for accidentally added backslashes in f-string expressions has been + hardened to handle more edge cases during quote normalization (#2437) +- Avoid changing a function return type annotation's type to a tuple by adding a + trailing comma (#2384) +- Parsing support has been added for unparenthesized walruses in set literals, set + comprehensions, and indices (#2447). +- Pin `setuptools-scm` build-time dependency version (#2457) +- Exclude typing-extensions version 3.10.0.1 due to it being broken on Python 3.10 + (#2460) + +### _Blackd_ + +- Replace sys.exit(-1) with raise ImportError as it plays more nicely with tools that + scan installed packages (#2440) + +### Integrations + +- The provided pre-commit hooks no longer specify `language_version` to avoid overriding + `default_language_version` (#2430) + +## 21.7b0 + +### _Black_ + +- Configuration files using TOML features higher than spec v0.5.0 are now supported + (#2301) +- Add primer support and test for code piped into black via STDIN (#2315) +- Fix internal error when `FORCE_OPTIONAL_PARENTHESES` feature is enabled (#2332) +- Accept empty stdin (#2346) +- Provide a more useful error when parsing fails during AST safety checks (#2304) + +### Docker + +- Add new `latest_release` tag automation to follow latest black release on docker + images (#2374) + +### Integrations + +- The vim plugin now searches upwards from the directory containing the current buffer + instead of the current working directory for pyproject.toml. (#1871) +- The vim plugin now reads the correct string normalization option in pyproject.toml + (#1869) +- The vim plugin no longer crashes Black when there's boolean values in pyproject.toml + (#1869) + +## 21.6b0 + +### _Black_ + +- Fix failure caused by `fmt: skip` and indentation (#2281) +- Account for += assignment when deciding whether to split string (#2312) +- Correct max string length calculation when there are string operators (#2292) +- Fixed option usage when using the `--code` flag (#2259) +- Do not call `uvloop.install()` when _Black_ is used as a library (#2303) +- Added `--required-version` option to require a specific version to be running (#2300) +- Fix incorrect custom breakpoint indices when string group contains fake f-strings + (#2311) +- Fix regression where `R` prefixes would be lowercased for docstrings (#2285) +- Fix handling of named escapes (`\N{...}`) when `--experimental-string-processing` is + used (#2319) + +### Integrations + +- The official Black action now supports choosing what version to use, and supports the + major 3 OSes. (#1940) + +## 21.5b2 + +### _Black_ + +- A space is no longer inserted into empty docstrings (#2249) +- Fix handling of .gitignore files containing non-ASCII characters on Windows (#2229) +- Respect `.gitignore` files in all levels, not only `root/.gitignore` file (apply + `.gitignore` rules like `git` does) (#2225) +- Restored compatibility with Click 8.0 on Python 3.6 when LANG=C used (#2227) +- Add extra uvloop install + import support if in python env (#2258) +- Fix --experimental-string-processing crash when matching parens are not found (#2283) +- Make sure to split lines that start with a string operator (#2286) +- Fix regular expression that black uses to identify f-expressions (#2287) + +### _Blackd_ + +- Add a lower bound for the `aiohttp-cors` dependency. Only 0.4.0 or higher is + supported. (#2231) + +### Packaging + +- Release self-contained x86_64 MacOS binaries as part of the GitHub release pipeline + (#2198) +- Always build binaries with the latest available Python (#2260) + +### Documentation + +- Add discussion of magic comments to FAQ page (#2272) +- `--experimental-string-processing` will be enabled by default in the future (#2273) +- Fix typos discovered by codespell (#2228) +- Fix Vim plugin installation instructions. (#2235) +- Add new Frequently Asked Questions page (#2247) +- Fix encoding + symlink issues preventing proper build on Windows (#2262) + +## 21.5b1 + +### _Black_ + +- Refactor `src/black/__init__.py` into many files (#2206) + +### Documentation + +- Replaced all remaining references to the + [`master`](https://github.com/psf/black/tree/main) branch with the + [`main`](https://github.com/psf/black/tree/main) branch. Some additional changes in + the source code were also made. (#2210) +- Sigificantly reorganized the documentation to make much more sense. Check them out by + heading over to [the stable docs on RTD](https://black.readthedocs.io/en/stable/). + (#2174) + +## 21.5b0 + +### _Black_ + +- Set `--pyi` mode if `--stdin-filename` ends in `.pyi` (#2169) +- Stop detecting target version as Python 3.9+ with pre-PEP-614 decorators that are + being called but with no arguments (#2182) + +### _Black-Primer_ + +- Add `--no-diff` to black-primer to suppress formatting changes (#2187) + +## 21.4b2 + +### _Black_ + +- Fix crash if the user configuration directory is inaccessible. (#2158) + +- Clarify + [circumstances](https://github.com/psf/black/blob/master/docs/the_black_code_style.md#pragmatism) + in which _Black_ may change the AST (#2159) + +- Allow `.gitignore` rules to be overridden by specifying `exclude` in `pyproject.toml` + or on the command line. (#2170) + +### _Packaging_ + +- Install `primer.json` (used by `black-primer` by default) with black. (#2154) + +## 21.4b1 + +### _Black_ + +- Fix crash on docstrings ending with "\\ ". (#2142) + +- Fix crash when atypical whitespace is cleaned out of dostrings (#2120) + +- Reflect the `--skip-magic-trailing-comma` and `--experimental-string-processing` flags + in the name of the cache file. Without this fix, changes in these flags would not take + effect if the cache had already been populated. (#2131) + +- Don't remove necessary parentheses from assignment expression containing assert / + return statements. (#2143) + +### _Packaging_ + +- Bump pathspec to >= 0.8.1 to solve invalid .gitignore exclusion handling + +## 21.4b0 + +### _Black_ + +- Fixed a rare but annoying formatting instability created by the combination of + optional trailing commas inserted by `Black` and optional parentheses looking at + pre-existing "magic" trailing commas. This fixes issue #1629 and all of its many many + duplicates. (#2126) + +- `Black` now processes one-line docstrings by stripping leading and trailing spaces, + and adding a padding space when needed to break up """". (#1740) + +- `Black` now cleans up leading non-breaking spaces in comments (#2092) + +- `Black` now respects `--skip-string-normalization` when normalizing multiline + docstring quotes (#1637) + +- `Black` no longer removes all empty lines between non-function code and decorators + when formatting typing stubs. Now `Black` enforces a single empty line. (#1646) + +- `Black` no longer adds an incorrect space after a parenthesized assignment expression + in if/while statements (#1655) + +- Added `--skip-magic-trailing-comma` / `-C` to avoid using trailing commas as a reason + to split lines (#1824) + +- fixed a crash when PWD=/ on POSIX (#1631) + +- fixed "I/O operation on closed file" when using --diff (#1664) + +- Prevent coloured diff output being interleaved with multiple files (#1673) + +- Added support for PEP 614 relaxed decorator syntax on python 3.9 (#1711) + +- Added parsing support for unparenthesized tuples and yield expressions in annotated + assignments (#1835) + +- added `--extend-exclude` argument (PR #2005) + +- speed up caching by avoiding pathlib (#1950) + +- `--diff` correctly indicates when a file doesn't end in a newline (#1662) + +- Added `--stdin-filename` argument to allow stdin to respect `--force-exclude` rules + (#1780) + +- Lines ending with `fmt: skip` will now be not formatted (#1800) + +- PR #2053: Black no longer relies on typed-ast for Python 3.8 and higher + +- PR #2053: Python 2 support is now optional, install with + `python3 -m pip install black[python2]` to maintain support. + +- Exclude `venv` directory by default (#1683) + +- Fixed "Black produced code that is not equivalent to the source" when formatting + Python 2 docstrings (#2037) + +### _Packaging_ + +- Self-contained native _Black_ binaries are now provided for releases via GitHub + Releases (#1743) + +## 20.8b1 + +### _Packaging_ + +- explicitly depend on Click 7.1.2 or newer as `Black` no longer works with versions + older than 7.0 + +## 20.8b0 + +### _Black_ + +- re-implemented support for explicit trailing commas: now it works consistently within + any bracket pair, including nested structures (#1288 and duplicates) + +- `Black` now reindents docstrings when reindenting code around it (#1053) + +- `Black` now shows colored diffs (#1266) + +- `Black` is now packaged using 'py3' tagged wheels (#1388) + +- `Black` now supports Python 3.8 code, e.g. star expressions in return statements + (#1121) + +- `Black` no longer normalizes capital R-string prefixes as those have a + community-accepted meaning (#1244) + +- `Black` now uses exit code 2 when specified configuration file doesn't exit (#1361) + +- `Black` now works on AWS Lambda (#1141) + +- added `--force-exclude` argument (#1032) + +- removed deprecated `--py36` option (#1236) + +- fixed `--diff` output when EOF is encountered (#526) + +- fixed `# fmt: off` handling around decorators (#560) + +- fixed unstable formatting with some `# type: ignore` comments (#1113) + +- fixed invalid removal on organizing brackets followed by indexing (#1575) + +- introduced `black-primer`, a CI tool that allows us to run regression tests against + existing open source users of Black (#1402) + +- introduced property-based fuzzing to our test suite based on Hypothesis and + Hypothersmith (#1566) + +- implemented experimental and disabled by default long string rewrapping (#1132), + hidden under a `--experimental-string-processing` flag while it's being worked on; + this is an undocumented and unsupported feature, you lose Internet points for + depending on it (#1609) + +### Vim plugin + +- prefer virtualenv packages over global packages (#1383) + +## 19.10b0 + +- added support for PEP 572 assignment expressions (#711) + +- added support for PEP 570 positional-only arguments (#943) + +- added support for async generators (#593) + +- added support for pre-splitting collections by putting an explicit trailing comma + inside (#826) + +- added `black -c` as a way to format code passed from the command line (#761) + +- --safe now works with Python 2 code (#840) + +- fixed grammar selection for Python 2-specific code (#765) + +- fixed feature detection for trailing commas in function definitions and call sites + (#763) + +- `# fmt: off`/`# fmt: on` comment pairs placed multiple times within the same block of + code now behave correctly (#1005) + +- _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) + +- _Black_ no longer crashes on Python 3.7 on some platform configurations (#494) + +- _Black_ no longer fails on comments in from-imports (#671) + +- _Black_ no longer fails when the file starts with a backslash (#922) + +- _Black_ no longer merges regular comments with type comments (#1027) + +- _Black_ no longer splits long lines that contain type comments (#997) + +- removed unnecessary parentheses around `yield` expressions (#834) + +- added parentheses around long tuples in unpacking assignments (#832) + +- added parentheses around complex powers when they are prefixed by a unary operator + (#646) + +- 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) + +- `blackd` now returns the version of _Black_ in the response headers (#1013) + +- `blackd` can now output the diff of formats on source code when the `X-Diff` header is + provided (#969) + +## 19.3b0 + +- new option `--target-version` to control which Python versions _Black_-formatted code + should target (#618) + +- deprecated `--py36` (use `--target-version=py36` instead) (#724) + +- _Black_ no longer normalizes numeric literals to include `_` separators (#696) + +- long `del` statements are now split into multiple lines (#698) + +- type comments are no longer mangled in function signatures + +- improved performance of formatting deeply nested data structures (#509) + +- _Black_ now properly formats multiple files in parallel on Windows (#632) + +- _Black_ now creates cache files atomically which allows it to be used in parallel + pipelines (like `xargs -P8`) (#673) + +- _Black_ now correctly indents comments in files that were previously formatted with + tabs (#262) + +- `blackd` now supports CORS (#622) + +## 18.9b0 + +- numeric literals are now formatted by _Black_ (#452, #461, #464, #469): + + - numeric literals are normalized to include `_` separators on Python 3.6+ code + + - added `--skip-numeric-underscore-normalization` to disable the above behavior and + leave numeric underscores as they were in the input + + - code with `_` in numeric literals is recognized as Python 3.6+ + + - most letters in numeric literals are lowercased (e.g., in `1e10`, `0x01`) + + - hexadecimal digits are always uppercased (e.g. `0xBADC0DE`) + +- added `blackd`, see + [its documentation](https://github.com/psf/black/blob/18.9b0/README.md#blackd) for + more info (#349) + +- adjacent string literals are now correctly split into multiple lines (#463) + +- trailing comma is now added to single imports that don't fit on a line (#250) + +- cache is now populated when `--check` is successful for a file which speeds up + consecutive checks of properly formatted unmodified files (#448) + +- whitespace at the beginning of the file is now removed (#399) + +- fixed mangling [pweave](http://mpastell.com/pweave/) and + [Spyder IDE](https://www.spyder-ide.org/) special comments (#532) + +- fixed unstable formatting when unpacking big tuples (#267) + +- fixed parsing of `__future__` imports with renames (#389) + +- fixed scope of `# fmt: off` when directly preceding `yield` and other nodes (#385) + +- fixed formatting of lambda expressions with default arguments (#468) + +- fixed `async for` statements: _Black_ no longer breaks them into separate lines (#372) + +- note: the Vim plugin stopped registering `,=` as a default chord as it turned out to + be a bad idea (#415) + +## 18.6b4 + +- hotfix: don't freeze when multiple comments directly precede `# fmt: off` (#371) + +## 18.6b3 + +- typing stub files (`.pyi`) now have blank lines added after constants (#340) + +- `# fmt: off` and `# fmt: on` are now much more dependable: + + - they now work also within bracket pairs (#329) + + - they now correctly work across function/class boundaries (#335) + + - they now work when an indentation block starts with empty lines or misaligned + comments (#334) + +- made Click not fail on invalid environments; note that Click is right but the + likelihood we'll need to access non-ASCII file paths when dealing with Python source + code is low (#277) + +- fixed improper formatting of f-strings with quotes inside interpolated expressions + (#322) + +- fixed unnecessary slowdown when long list literals where found in a file + +- fixed unnecessary slowdown on AST nodes with very many siblings + +- fixed cannibalizing backslashes during string normalization + +- fixed a crash due to symbolic links pointing outside of the project directory (#338) + +## 18.6b2 + +- added `--config` (#65) + +- added `-h` equivalent to `--help` (#316) + +- fixed improper unmodified file caching when `-S` was used + +- fixed extra space in string unpacking (#305) + +- fixed formatting of empty triple quoted strings (#313) + +- fixed unnecessary slowdown in comment placement calculation on lines without comments + +## 18.6b1 + +- hotfix: don't output human-facing information on stdout (#299) + +- hotfix: don't output cake emoji on non-zero return code (#300) + +## 18.6b0 + +- added `--include` and `--exclude` (#270) + +- added `--skip-string-normalization` (#118) + +- added `--verbose` (#283) + +- the header output in `--diff` now actually conforms to the unified diff spec + +- fixed long trivial assignments being wrapped in unnecessary parentheses (#273) + +- fixed unnecessary parentheses when a line contained multiline strings (#232) + +- fixed stdin handling not working correctly if an old version of Click was used (#276) + +- _Black_ now preserves line endings when formatting a file in place (#258) + +## 18.5b1 + +- added `--pyi` (#249) + +- added `--py36` (#249) + +- Python grammar pickle caches are stored with the formatting caches, making _Black_ + work in environments where site-packages is not user-writable (#192) + +- _Black_ now enforces a PEP 257 empty line after a class-level docstring (and/or + fields) and the first method + +- fixed invalid code produced when standalone comments were present in a trailer that + was omitted from line splitting on a large expression (#237) + +- fixed optional parentheses being removed within `# fmt: off` sections (#224) + +- fixed invalid code produced when stars in very long imports were incorrectly wrapped + in optional parentheses (#234) + +- fixed unstable formatting when inline comments were moved around in a trailer that was + omitted from line splitting on a large expression (#238) + +- fixed extra empty line between a class declaration and the first method if no class + docstring or fields are present (#219) + +- fixed extra empty line between a function signature and an inner function or inner + class (#196) + +## 18.5b0 + +- call chains are now formatted according to the + [fluent interfaces](https://en.wikipedia.org/wiki/Fluent_interface) style (#67) + +- data structure literals (tuples, lists, dictionaries, and sets) are now also always + exploded like imports when they don't fit in a single line (#152) + +- slices are now formatted according to PEP 8 (#178) + +- parentheses are now also managed automatically on the right-hand side of assignments + and return statements (#140) + +- math operators now use their respective priorities for delimiting multiline + expressions (#148) + +- optional parentheses are now omitted on expressions that start or end with a bracket + and only contain a single operator (#177) + +- empty parentheses in a class definition are now removed (#145, #180) + +- string prefixes are now standardized to lowercase and `u` is removed on Python 3.6+ + only code and Python 2.7+ code with the `unicode_literals` future import (#188, #198, + #199) + +- typing stub files (`.pyi`) are now formatted in a style that is consistent with PEP + 484 (#207, #210) + +- progress when reformatting many files is now reported incrementally + +- fixed trailers (content with brackets) being unnecessarily exploded into their own + lines after a dedented closing bracket (#119) + +- fixed an invalid trailing comma sometimes left in imports (#185) + +- fixed non-deterministic formatting when multiple pairs of removable parentheses were + used (#183) + +- fixed multiline strings being unnecessarily wrapped in optional parentheses in long + assignments (#215) + +- fixed not splitting long from-imports with only a single name + +- fixed Python 3.6+ file discovery by also looking at function calls with unpacking. + This fixed non-deterministic formatting if trailing commas where used both in function + signatures with stars and function calls with stars but the former would be + reformatted to a single line. + +- fixed crash on dealing with optional parentheses (#193) + +- fixed "is", "is not", "in", and "not in" not considered operators for splitting + purposes + +- fixed crash when dead symlinks where encountered + +## 18.4a4 + +- don't populate the cache on `--check` (#175) + +## 18.4a3 + +- added a "cache"; files already reformatted that haven't changed on disk won't be + reformatted again (#109) + +- `--check` and `--diff` are no longer mutually exclusive (#149) + +- generalized star expression handling, including double stars; this fixes + multiplication making expressions "unsafe" for trailing commas (#132) + +- _Black_ no longer enforces putting empty lines behind control flow statements (#90) + +- _Black_ now splits imports like "Mode 3 + trailing comma" of isort (#127) + +- fixed comment indentation when a standalone comment closes a block (#16, #32) + +- fixed standalone comments receiving extra empty lines if immediately preceding a + class, def, or decorator (#56, #154) + +- fixed `--diff` not showing entire path (#130) + +- fixed parsing of complex expressions after star and double stars in function calls + (#2) + +- fixed invalid splitting on comma in lambda arguments (#133) + +- fixed missing splits of ternary expressions (#141) + +## 18.4a2 + +- fixed parsing of unaligned standalone comments (#99, #112) + +- fixed placement of dictionary unpacking inside dictionary literals (#111) + +- Vim plugin now works on Windows, too + +- fixed unstable formatting when encountering unnecessarily escaped quotes in a string + (#120) + +## 18.4a1 + +- added `--quiet` (#78) + +- added automatic parentheses management (#4) + +- added [pre-commit](https://pre-commit.com) integration (#103, #104) + +- fixed reporting on `--check` with multiple files (#101, #102) + +- fixed removing backslash escapes from raw strings (#100, #105) + +## 18.4a0 + +- added `--diff` (#87) + +- add line breaks before all delimiters, except in cases like commas, to better comply + with PEP 8 (#73) + +- standardize string literals to use double quotes (almost) everywhere (#75) + +- fixed handling of standalone comments within nested bracketed expressions; _Black_ + will no longer produce super long lines or put all standalone comments at the end of + the expression (#22) + +- fixed 18.3a4 regression: don't crash and burn on empty lines with trailing whitespace + (#80) + +- fixed 18.3a4 regression: `# yapf: disable` usage as trailing comment would cause + _Black_ to not emit the rest of the file (#95) + +- when CTRL+C is pressed while formatting many files, _Black_ no longer freaks out with + a flurry of asyncio-related exceptions + +- only allow up to two empty lines on module level and only single empty lines within + functions (#74) + +## 18.3a4 + +- `# fmt: off` and `# fmt: on` are implemented (#5) + +- automatic detection of deprecated Python 2 forms of print statements and exec + statements in the formatted file (#49) + +- use proper spaces for complex expressions in default values of typed function + arguments (#60) + +- only return exit code 1 when --check is used (#50) + +- don't remove single trailing commas from square bracket indexing (#59) + +- don't omit whitespace if the previous factor leaf wasn't a math operator (#55) + +- omit extra space in kwarg unpacking if it's the first argument (#46) + +- omit extra space in + [Sphinx auto-attribute comments](http://www.sphinx-doc.org/en/stable/ext/autodoc.html#directive-autoattribute) + (#68) + +## 18.3a3 + +- don't remove single empty lines outside of bracketed expressions (#19) + +- added ability to pipe formatting from stdin to stdin (#25) + +- restored ability to format code with legacy usage of `async` as a name (#20, #42) + +- even better handling of numpy-style array indexing (#33, again) + +## 18.3a2 + +- changed positioning of binary operators to occur at beginning of lines instead of at + the end, following + [a recent change to PEP 8](https://github.com/python/peps/commit/c59c4376ad233a62ca4b3a6060c81368bd21e85b) + (#21) + +- ignore empty bracket pairs while splitting. This avoids very weirdly looking + formatting (#34, #35) + +- remove a trailing comma if there is a single argument to a call + +- if top level functions were separated by a comment, don't put four empty lines after + the upper function + +- fixed unstable formatting of newlines with imports + +- fixed unintentional folding of post scriptum standalone comments into last statement + if it was a simple statement (#18, #28) + +- fixed missing space in numpy-style array indexing (#33) + +- fixed spurious space after star-based unary expressions (#31) + +## 18.3a1 + +- added `--check` + +- only put trailing commas in function signatures and calls if it's safe to do so. If + the file is Python 3.6+ it's always safe, otherwise only safe if there are no `*args` + or `**kwargs` used in the signature or call. (#8) + +- fixed invalid spacing of dots in relative imports (#6, #13) + +- fixed invalid splitting after comma on unpacked variables in for-loops (#23) + +- fixed spurious space in parenthesized set expressions (#7) + +- fixed spurious space after opening parentheses and in default arguments (#14, #17) + +- fixed spurious space after unary operators when the operand was a complex expression + (#15) + +## 18.3a0 + +- first published version, Happy 🍰 Day 2018! + +- alpha quality + +- date-versioned (see: ) diff --git a/black-23.3.0.dist-info/RECORD b/black-23.3.0.dist-info/RECORD new file mode 100644 index 000000000000..6c06c8b8de4d --- /dev/null +++ b/black-23.3.0.dist-info/RECORD @@ -0,0 +1,118 @@ +../Scripts/black.exe,sha256=d_8O-puwu8qnvCIrm4h4lPUM3WYUNaeehD6LU9w2i8M,108472 +../Scripts/blackd.exe,sha256=kFDluXS4SL_mZxRIziLSPYlQMvXBf0POc_fJiWkanMQ,108473 +2ec0e72aa72355e6eccf__mypyc.cp311-win_amd64.pyd,sha256=xS978QtiFu7n7aQ0GwR1lZ0rfZq1PYiN-8YeKkCTKVI,2563072 +__pycache__/_black_version.cpython-311.pyc,, +_black_version.py,sha256=Itz3hBkAtVtp5Nk-c8g6RSB1F2hCDbYLbyvwGFDH6PA,20 +black-23.3.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +black-23.3.0.dist-info/METADATA,sha256=7maOtd8jk0Lqm5DKa4aWAVbJeidh5PmNCgRozjT7hyI,61028 +black-23.3.0.dist-info/RECORD,, +black-23.3.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +black-23.3.0.dist-info/WHEEL,sha256=kytZiKdAk3alKYBjQlaTrburqpxrrCfu2jToxKGdCyo,97 +black-23.3.0.dist-info/entry_points.txt,sha256=qBIyywHwGRkJj7kieq86kqf77rz3qGC4Joj36lHnxwc,78 +black-23.3.0.dist-info/licenses/AUTHORS.md,sha256=asekhzda3Ji8C99_8iWFvo8eYNLHAt0o9-EPoCqTdNg,8238 +black-23.3.0.dist-info/licenses/LICENSE,sha256=XQJSBb4crFXeCOvZ-WHsfXTQ-Zj2XxeFbd0ien078zM,1101 +black/__init__.cp311-win_amd64.pyd,sha256=tv8lVbO-QrhaNKSY5LY11bTETWHG9NlOYu782i9Nbjo,10752 +black/__init__.py,sha256=dvXVka-37bgy3Uctk_ipA2aiKHf355K4CywV2Q5IJvI,48133 +black/__main__.py,sha256=6V0pV9Zeh8940mbQbVTCPdTX4Gjq1HGrFCA6E4HLGaM,50 +black/__pycache__/__init__.cpython-311.pyc,, +black/__pycache__/__main__.cpython-311.pyc,, +black/__pycache__/_width_table.cpython-311.pyc,, +black/__pycache__/brackets.cpython-311.pyc,, +black/__pycache__/cache.cpython-311.pyc,, +black/__pycache__/comments.cpython-311.pyc,, +black/__pycache__/concurrency.cpython-311.pyc,, +black/__pycache__/const.cpython-311.pyc,, +black/__pycache__/debug.cpython-311.pyc,, +black/__pycache__/files.cpython-311.pyc,, +black/__pycache__/handle_ipynb_magics.cpython-311.pyc,, +black/__pycache__/linegen.cpython-311.pyc,, +black/__pycache__/lines.cpython-311.pyc,, +black/__pycache__/mode.cpython-311.pyc,, +black/__pycache__/nodes.cpython-311.pyc,, +black/__pycache__/numerics.cpython-311.pyc,, +black/__pycache__/output.cpython-311.pyc,, +black/__pycache__/parsing.cpython-311.pyc,, +black/__pycache__/report.cpython-311.pyc,, +black/__pycache__/rusty.cpython-311.pyc,, +black/__pycache__/strings.cpython-311.pyc,, +black/__pycache__/trans.cpython-311.pyc,, +black/_width_table.cp311-win_amd64.pyd,sha256=YlGQfXy7TQS5FmNvPx2XnfJ8uY9GefxnoMEde8FXLME,10752 +black/_width_table.py,sha256=Acdq_ndR9fvXFuszs6CIps9IGMJQrLuvRVqVB6FlmKk,11355 +black/brackets.cp311-win_amd64.pyd,sha256=ksrlNARbLCIt5VjDlKPRFIgKZW1xokPbyGGEfMnWveA,10752 +black/brackets.py,sha256=5VALNz_M51ibn8KaFawOpvAUEzHUd7rD3PAJjNMpM3Q,12654 +black/cache.cp311-win_amd64.pyd,sha256=fP5b0d6ElWpY3VJe_Zf0vkxBoCfI8KwcdIAAfD7D-2Q,10752 +black/cache.py,sha256=AC5MnlaEl_EDdAcHdd1kT6gK9VgTCe527uvSaj0umTY,3043 +black/comments.cp311-win_amd64.pyd,sha256=dWxVN8F3v7FjksgqmCndrZyfWNf6qsWgMffb1fXIXTE,10752 +black/comments.py,sha256=PXP05CmYbjSjDw77nyrxAkRpvbqsFzjEyIg0wLn81QQ,13127 +black/concurrency.py,sha256=8mKP3yNedBlWHMTYr-f3uDAyCmqZZKo6r9jS1P6GQbs,6473 +black/const.cp311-win_amd64.pyd,sha256=vp_9K90xvnZAwMMoZXoHobHPVupM1YGjbGZKMXaox0Y,10752 +black/const.py,sha256=8aKF54-MAoIL6sBbydSCc7e5PXvB7uM6KQWN4PcFEa0,288 +black/debug.py,sha256=xaNChfqcWPMhYKJPOIQBU86Rl58YFRO5v8OQ3LLPGO4,1641 +black/files.py,sha256=21UsBiU_wcYc782mcg2XhSBVF1p8jsex-2zY8C7L5l4,13847 +black/handle_ipynb_magics.cp311-win_amd64.pyd,sha256=qKXjXUiBqDP5nZ9xYVuOU6BLr702oJu5_AI_SMD1uzM,10752 +black/handle_ipynb_magics.py,sha256=vqa6vUCg_urPv63hPZ5UfrgopajuQzjlDxvXT6lxk5w,13960 +black/linegen.cp311-win_amd64.pyd,sha256=6NVc9t6UN1P9nKfX941njA18MZi-hGzLwqZ8Z-77KFg,10752 +black/linegen.py,sha256=phujHgJqcTTVQs5_OVak9w-pBY9ODjGCRWN1Khm4uZQ,61810 +black/lines.cp311-win_amd64.pyd,sha256=HtBxoDN3ODoNKUFa_9JXToO19nnYTERk2BmHI3ul41Q,10752 +black/lines.py,sha256=CRvjA2cw5IQEfEqhaZn64LexlHUgXeJRpMnkYon5uoE,37533 +black/mode.cp311-win_amd64.pyd,sha256=ZrGnEMJPkKFovu39gzcfb7w5fAxvpS3d8jSO6arXFQw,10752 +black/mode.py,sha256=cOCXkccjqE6zXafjJzPhYN6B7UIBbQ2EanSKuwR5zmQ,7458 +black/nodes.cp311-win_amd64.pyd,sha256=H7oLDRGlmeOOynqycIsSnDbg2bP8yiJkioDdzvqSXQ4,10752 +black/nodes.py,sha256=PSYFpPi-vkv2LLPXqn_uDgFEc8qEaQBneZlunDROVS4,26598 +black/numerics.cp311-win_amd64.pyd,sha256=RPQwS-ZNax4VY33BNcOPPdKKjEDY-A09njRuaCN_mJo,10752 +black/numerics.py,sha256=fMj9bXRyOAqqBkZ3c6tMpoj--uPvRVh4_2F96tzK6OQ,1713 +black/output.py,sha256=aXH7mqzr-_m0ofbVI9GTjLKxe3BmtQYzlQoAYonmcec,3591 +black/parsing.cp311-win_amd64.pyd,sha256=N-pHQjoOB-g8NbK-jbcOnx184BPkcsxYhzp3kVGeTtQ,10752 +black/parsing.py,sha256=3ocppkmPNFv3AzLppYn4IVH18GUbkvvGUskl6GJHKLY,10487 +black/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +black/report.py,sha256=Qg8hfWlyKZ0Wyx4klC_Toq-028zaX0xGjJeO3z29yfs,3557 +black/rusty.cp311-win_amd64.pyd,sha256=W_TPf_azfyyL0gA1daZfw0DoETQwifjexWkOobagZXU,10752 +black/rusty.py,sha256=BPW2RsHJGEYqYpveeyahjALsiv8MIhSm6ECppKB95uo,583 +black/strings.cp311-win_amd64.pyd,sha256=dQ2_db2P9qZOSPcO8hgVt2qmFlJObQscNPAv5zBvUlU,10752 +black/strings.py,sha256=NPeTiacQRN8R8qkMf_ctn3FCCRN4KIyV2uNSvlAxFhw,11533 +black/trans.cp311-win_amd64.pyd,sha256=XoBHW1LbH6M4rzn5fXMAMy7_ajKaspjeF5qL_vrvQzI,10752 +black/trans.py,sha256=ThZ34L09RwEN6QLqXInnKeQmS3VNBgN2VWUqcLcqK8E,93238 +blackd/__init__.py,sha256=90REUG68i02IkIWq2Sj-bSMSmDqPH0gb6pGdmsFislw,8295 +blackd/__main__.py,sha256=-2NrSIZ5Es7pTFThp8w5JL9LwmmxtF1akhe7NU1OGvs,40 +blackd/__pycache__/__init__.cpython-311.pyc,, +blackd/__pycache__/__main__.cpython-311.pyc,, +blackd/__pycache__/middlewares.cpython-311.pyc,, +blackd/middlewares.py,sha256=77hGqdr2YypGhF_PhRiUgOEOUYykCB174Bb0higSI_U,1630 +blib2to3/Grammar.txt,sha256=4FsuLDx0QZJBQ4TAhCoBFsMxrQu8b6ochAPBQ1hYjeI,11530 +blib2to3/LICENSE,sha256=D2HM6JsydKABNqFe2-_N4Lf8VxxE1_5DVQtAFzw2_w8,13016 +blib2to3/PatternGrammar.txt,sha256=m6wfWk7y3-Qo35r77NWdJQ78XL1CqT_Pm0xr6eCOdpM,821 +blib2to3/README,sha256=xvm31R5NUiDUMDPNl9eKRkofrxkLriW2d2RbpYMZsQs,1094 +blib2to3/__init__.py,sha256=CSR2VOIKJL-JnGG41PcfbQZQEPCw43jfeK_EUisNsFQ,9 +blib2to3/__pycache__/__init__.cpython-311.pyc,, +blib2to3/__pycache__/pygram.cpython-311.pyc,, +blib2to3/__pycache__/pytree.cpython-311.pyc,, +blib2to3/pgen2/__init__.py,sha256=z8NemtNtAaIBocPMl0aMLgxaQMedsKOS_dOVAy8c3TI,147 +blib2to3/pgen2/__pycache__/__init__.cpython-311.pyc,, +blib2to3/pgen2/__pycache__/conv.cpython-311.pyc,, +blib2to3/pgen2/__pycache__/driver.cpython-311.pyc,, +blib2to3/pgen2/__pycache__/grammar.cpython-311.pyc,, +blib2to3/pgen2/__pycache__/literals.cpython-311.pyc,, +blib2to3/pgen2/__pycache__/parse.cpython-311.pyc,, +blib2to3/pgen2/__pycache__/pgen.cpython-311.pyc,, +blib2to3/pgen2/__pycache__/token.cpython-311.pyc,, +blib2to3/pgen2/__pycache__/tokenize.cpython-311.pyc,, +blib2to3/pgen2/conv.cp311-win_amd64.pyd,sha256=44-4RTFACFNtaaEUjpsiQssvc2o_BNA8A0uegNCQFLo,10752 +blib2to3/pgen2/conv.py,sha256=fzBJNYw56xutCa8alGybrrM16jMkpBfQBWCrn_zp1oY,9863 +blib2to3/pgen2/driver.cp311-win_amd64.pyd,sha256=Tlt4z4JjLuHxkNG13Ytg8jwd55jiqRurKqmT_RORb9g,10752 +blib2to3/pgen2/driver.py,sha256=OjBtiv7pU53JZMkOWtNnIf-ZVT0NLa9W2bIEAIgnQF8,10997 +blib2to3/pgen2/grammar.cp311-win_amd64.pyd,sha256=GX2Pn35ZbcHWx_0SKix-tFDDqEwYpBjKmM1inAdCRKs,10752 +blib2to3/pgen2/grammar.py,sha256=0uVcHmkAI7395XhMs7UQELQ0AoiURUJRqNcz3EwsxVA,7100 +blib2to3/pgen2/literals.cp311-win_amd64.pyd,sha256=gABd1olTs7ymiI-mSAb2tSOiWXIwXXKXOsd3N_q_64o,10752 +blib2to3/pgen2/literals.py,sha256=qSVA2gWKC6qK4IftyvBB5QQtx8cJpYaZyVqaIHbQktw,1696 +blib2to3/pgen2/parse.cp311-win_amd64.pyd,sha256=_PDh_ckW-ULRVc1tGLzQuyTVzph4tnOijb7Twh_w8zQ,10752 +blib2to3/pgen2/parse.py,sha256=Fhx-niATzqoRvUv_6SMujagq2IPiw6ZBPD3FZG-ZqQ4,15252 +blib2to3/pgen2/pgen.cp311-win_amd64.pyd,sha256=M9q8iBsImhK6qYk5d4hVGf8Ye8j_V3ppCPyaJhgc8AA,10752 +blib2to3/pgen2/pgen.py,sha256=5p-4dKKQOmX2VbfZKmCBKy_iKQaqwJE3i7XtDWWyrdU,15924 +blib2to3/pgen2/token.cp311-win_amd64.pyd,sha256=pjAN9_WtuUZeaxZVN7rfFV9pb4amAl0vCdn_JceJV8M,10752 +blib2to3/pgen2/token.py,sha256=eYrl31BASlDM3GLPWA_0EO3CbSzbvKeI9I0bDbo6NkY,2013 +blib2to3/pgen2/tokenize.cp311-win_amd64.pyd,sha256=FcbG8xwvEaVpm2oBx71I5pQU9Y9MuGj82bWT186XwQg,10752 +blib2to3/pgen2/tokenize.py,sha256=v2jYiiLpfGoMVIkHNLXIYnmAo2fyAshfhl3Y31JJM1s,23530 +blib2to3/pygram.cp311-win_amd64.pyd,sha256=A8mXlca9faFKSNuHVlhIbeBk4oj1upL1pk7-_Sia9pA,10752 +blib2to3/pygram.py,sha256=ZusInF45oWnvUFK5RmOspZPK9MbUOJk-UsH44ct1W8E,5950 +blib2to3/pytree.cp311-win_amd64.pyd,sha256=CyQOuXpeFp0dHAC1-oSg8Yr8zajDaEQYYGFng599Y2c,10752 +blib2to3/pytree.py,sha256=v8HZPe8jDnrg8_uKlfBzNjBCD_rBfQdqF1DJeNGgJmA,33601 diff --git a/black-23.3.0.dist-info/REQUESTED b/black-23.3.0.dist-info/REQUESTED new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/black-23.3.0.dist-info/WHEEL b/black-23.3.0.dist-info/WHEEL new file mode 100644 index 000000000000..a50955cc6d78 --- /dev/null +++ b/black-23.3.0.dist-info/WHEEL @@ -0,0 +1,4 @@ +Wheel-Version: 1.0 +Generator: hatchling 1.13.0 +Root-Is-Purelib: false +Tag: cp311-cp311-win_amd64 diff --git a/black-23.3.0.dist-info/entry_points.txt b/black-23.3.0.dist-info/entry_points.txt new file mode 100644 index 000000000000..d0bf90792ea2 --- /dev/null +++ b/black-23.3.0.dist-info/entry_points.txt @@ -0,0 +1,3 @@ +[console_scripts] +black = black:patched_main +blackd = blackd:patched_main [d] diff --git a/black-23.3.0.dist-info/licenses/AUTHORS.md b/black-23.3.0.dist-info/licenses/AUTHORS.md new file mode 100644 index 000000000000..ab3f30b8821e --- /dev/null +++ b/black-23.3.0.dist-info/licenses/AUTHORS.md @@ -0,0 +1,195 @@ +# Authors + +Glued together by [Łukasz Langa](mailto:lukasz@langa.pl). + +Maintained with: + +- [Carol Willing](mailto:carolcode@willingconsulting.com) +- [Carl Meyer](mailto:carl@oddbird.net) +- [Jelle Zijlstra](mailto:jelle.zijlstra@gmail.com) +- [Mika Naylor](mailto:mail@autophagy.io) +- [Zsolt Dollenstein](mailto:zsol.zsol@gmail.com) +- [Cooper Lees](mailto:me@cooperlees.com) +- [Richard Si](mailto:sichard26@gmail.com) +- [Felix Hildén](mailto:felix.hilden@gmail.com) +- [Batuhan Taskaya](mailto:batuhan@python.org) + +Multiple contributions by: + +- [Abdur-Rahmaan Janhangeer](mailto:arj.python@gmail.com) +- [Adam Johnson](mailto:me@adamj.eu) +- [Adam Williamson](mailto:adamw@happyassassin.net) +- [Alexander Huynh](mailto:ahrex-gh-psf-black@e.sc) +- [Alexandr Artemyev](mailto:mogost@gmail.com) +- [Alex Vandiver](mailto:github@chmrr.net) +- [Allan Simon](mailto:allan.simon@supinfo.com) +- Anders-Petter Ljungquist +- [Amethyst Reese](mailto:amy@n7.gg) +- [Andrew Thorp](mailto:andrew.thorp.dev@gmail.com) +- [Andrew Zhou](mailto:andrewfzhou@gmail.com) +- [Andrey](mailto:dyuuus@yandex.ru) +- [Andy Freeland](mailto:andy@andyfreeland.net) +- [Anthony Sottile](mailto:asottile@umich.edu) +- [Antonio Ossa Guerra](mailto:aaossa+black@uc.cl) +- [Arjaan Buijk](mailto:arjaan.buijk@gmail.com) +- [Arnav Borbornah](mailto:arnavborborah11@gmail.com) +- [Artem Malyshev](mailto:proofit404@gmail.com) +- [Asger Hautop Drewsen](mailto:asgerdrewsen@gmail.com) +- [Augie Fackler](mailto:raf@durin42.com) +- [Aviskar KC](mailto:aviskarkc10@gmail.com) +- Batuhan Taşkaya +- [Benjamin Wohlwend](mailto:bw@piquadrat.ch) +- [Benjamin Woodruff](mailto:github@benjam.info) +- [Bharat Raghunathan](mailto:bharatraghunthan9767@gmail.com) +- [Brandt Bucher](mailto:brandtbucher@gmail.com) +- [Brett Cannon](mailto:brett@python.org) +- [Bryan Bugyi](mailto:bryan.bugyi@rutgers.edu) +- [Bryan Forbes](mailto:bryan@reigndropsfall.net) +- [Calum Lind](mailto:calumlind@gmail.com) +- [Charles](mailto:peacech@gmail.com) +- Charles Reid +- [Christian Clauss](mailto:cclauss@bluewin.ch) +- [Christian Heimes](mailto:christian@python.org) +- [Chuck Wooters](mailto:chuck.wooters@microsoft.com) +- [Chris Rose](mailto:offline@offby1.net) +- Codey Oxley +- [Cong](mailto:congusbongus@gmail.com) +- [Cooper Ry Lees](mailto:me@cooperlees.com) +- [Dan Davison](mailto:dandavison7@gmail.com) +- [Daniel Hahler](mailto:github@thequod.de) +- [Daniel M. Capella](mailto:polycitizen@gmail.com) +- Daniele Esposti +- [David Hotham](mailto:david.hotham@metaswitch.com) +- [David Lukes](mailto:dafydd.lukes@gmail.com) +- [David Szotten](mailto:davidszotten@gmail.com) +- [Denis Laxalde](mailto:denis@laxalde.org) +- [Douglas Thor](mailto:dthor@transphormusa.com) +- dylanjblack +- [Eli Treuherz](mailto:eli@treuherz.com) +- [Emil Hessman](mailto:emil@hessman.se) +- [Felix Kohlgrüber](mailto:felix.kohlgrueber@gmail.com) +- [Florent Thiery](mailto:fthiery@gmail.com) +- Francisco +- [Giacomo Tagliabue](mailto:giacomo.tag@gmail.com) +- [Greg Gandenberger](mailto:ggandenberger@shoprunner.com) +- [Gregory P. Smith](mailto:greg@krypto.org) +- Gustavo Camargo +- hauntsaninja +- [Hadi Alqattan](mailto:alqattanhadizaki@gmail.com) +- [Hassan Abouelela](mailto:hassan@hassanamr.com) +- [Heaford](mailto:dan@heaford.com) +- [Hugo Barrera](mailto::hugo@barrera.io) +- Hugo van Kemenade +- [Hynek Schlawack](mailto:hs@ox.cx) +- [Ionite](mailto:dev@ionite.io) +- [Ivan Katanić](mailto:ivan.katanic@gmail.com) +- [Jakub Kadlubiec](mailto:jakub.kadlubiec@skyscanner.net) +- [Jakub Warczarek](mailto:jakub.warczarek@gmail.com) +- [Jan Hnátek](mailto:jan.hnatek@gmail.com) +- [Jason Fried](mailto:me@jasonfried.info) +- [Jason Friedland](mailto:jason@friedland.id.au) +- [jgirardet](mailto:ijkl@netc.fr) +- Jim Brännlund +- [Jimmy Jia](mailto:tesrin@gmail.com) +- [Joe Antonakakis](mailto:jma353@cornell.edu) +- [Jon Dufresne](mailto:jon.dufresne@gmail.com) +- [Jonas Obrist](mailto:ojiidotch@gmail.com) +- [Jonty Wareing](mailto:jonty@jonty.co.uk) +- [Jose Nazario](mailto:jose.monkey.org@gmail.com) +- [Joseph Larson](mailto:larson.joseph@gmail.com) +- [Josh Bode](mailto:joshbode@fastmail.com) +- [Josh Holland](mailto:anowlcalledjosh@gmail.com) +- [Joshua Cannon](mailto:joshdcannon@gmail.com) +- [José Padilla](mailto:jpadilla@webapplicate.com) +- [Juan Luis Cano Rodríguez](mailto:hello@juanlu.space) +- [kaiix](mailto:kvn.hou@gmail.com) +- [Katie McLaughlin](mailto:katie@glasnt.com) +- Katrin Leinweber +- [Keith Smiley](mailto:keithbsmiley@gmail.com) +- [Kenyon Ralph](mailto:kenyon@kenyonralph.com) +- [Kevin Kirsche](mailto:Kev.Kirsche+GitHub@gmail.com) +- [Kyle Hausmann](mailto:kyle.hausmann@gmail.com) +- [Kyle Sunden](mailto:sunden@wisc.edu) +- Lawrence Chan +- [Linus Groh](mailto:mail@linusgroh.de) +- [Loren Carvalho](mailto:comradeloren@gmail.com) +- [Luka Sterbic](mailto:luka.sterbic@gmail.com) +- [LukasDrude](mailto:mail@lukas-drude.de) +- Mahmoud Hossam +- Mariatta +- [Matt VanEseltine](mailto:vaneseltine@gmail.com) +- [Matthew Clapp](mailto:itsayellow+dev@gmail.com) +- [Matthew Walster](mailto:matthew@walster.org) +- Max Smolens +- [Michael Aquilina](mailto:michaelaquilina@gmail.com) +- [Michael Flaxman](mailto:michael.flaxman@gmail.com) +- [Michael J. Sullivan](mailto:sully@msully.net) +- [Michael McClimon](mailto:michael@mcclimon.org) +- [Miguel Gaiowski](mailto:miggaiowski@gmail.com) +- [Mike](mailto:roshi@fedoraproject.org) +- [mikehoyio](mailto:mikehoy@gmail.com) +- [Min ho Kim](mailto:minho42@gmail.com) +- [Miroslav Shubernetskiy](mailto:miroslav@miki725.com) +- MomIsBestFriend +- [Nathan Goldbaum](mailto:ngoldbau@illinois.edu) +- [Nathan Hunt](mailto:neighthan.hunt@gmail.com) +- [Neraste](mailto:neraste.herr10@gmail.com) +- [Nikolaus Waxweiler](mailto:madigens@gmail.com) +- [Ofek Lev](mailto:ofekmeister@gmail.com) +- [Osaetin Daniel](mailto:osaetindaniel@gmail.com) +- [otstrel](mailto:otstrel@gmail.com) +- [Pablo Galindo](mailto:Pablogsal@gmail.com) +- [Paul Ganssle](mailto:p.ganssle@gmail.com) +- [Paul Meinhardt](mailto:mnhrdt@gmail.com) +- [Peter Bengtsson](mailto:mail@peterbe.com) +- [Peter Grayson](mailto:pete@jpgrayson.net) +- [Peter Stensmyr](mailto:peter.stensmyr@gmail.com) +- pmacosta +- [Quentin Pradet](mailto:quentin@pradet.me) +- [Ralf Schmitt](mailto:ralf@systemexit.de) +- [Ramón Valles](mailto:mroutis@protonmail.com) +- [Richard Fearn](mailto:richardfearn@gmail.com) +- [Rishikesh Jha](mailto:rishijha424@gmail.com) +- [Rupert Bedford](mailto:rupert@rupertb.com) +- Russell Davis +- [Sagi Shadur](mailto:saroad2@gmail.com) +- [Rémi Verschelde](mailto:rverschelde@gmail.com) +- [Sami Salonen](mailto:sakki@iki.fi) +- [Samuel Cormier-Iijima](mailto:samuel@cormier-iijima.com) +- [Sanket Dasgupta](mailto:sanketdasgupta@gmail.com) +- Sergi +- [Scott Stevenson](mailto:scott@stevenson.io) +- Shantanu +- [shaoran](mailto:shaoran@sakuranohana.org) +- [Shinya Fujino](mailto:shf0811@gmail.com) +- springstan +- [Stavros Korokithakis](mailto:hi@stavros.io) +- [Stephen Rosen](mailto:sirosen@globus.org) +- [Steven M. Vascellaro](mailto:S.Vascellaro@gmail.com) +- [Sunil Kapil](mailto:snlkapil@gmail.com) +- [Sébastien Eustace](mailto:sebastien.eustace@gmail.com) +- [Tal Amuyal](mailto:TalAmuyal@gmail.com) +- [Terrance](mailto:git@terrance.allofti.me) +- [Thom Lu](mailto:thomas.c.lu@gmail.com) +- [Thomas Grainger](mailto:tagrain@gmail.com) +- [Tim Gates](mailto:tim.gates@iress.com) +- [Tim Swast](mailto:swast@google.com) +- [Timo](mailto:timo_tk@hotmail.com) +- Toby Fleming +- [Tom Christie](mailto:tom@tomchristie.com) +- [Tony Narlock](mailto:tony@git-pull.com) +- [Tsuyoshi Hombashi](mailto:tsuyoshi.hombashi@gmail.com) +- [Tushar Chandra](mailto:tusharchandra2018@u.northwestern.edu) +- [Tzu-ping Chung](mailto:uranusjr@gmail.com) +- [Utsav Shah](mailto:ukshah2@illinois.edu) +- utsav-dbx +- vezeli +- [Ville Skyttä](mailto:ville.skytta@iki.fi) +- [Vishwas B Sharma](mailto:sharma.vishwas88@gmail.com) +- [Vlad Emelianov](mailto:volshebnyi@gmail.com) +- [williamfzc](mailto:178894043@qq.com) +- [wouter bolsterlee](mailto:wouter@bolsterl.ee) +- Yazdan +- [Yngve Høiseth](mailto:yngve@hoiseth.net) +- [Yurii Karabas](mailto:1998uriyyo@gmail.com) +- [Zac Hatfield-Dodds](mailto:zac@zhd.dev) diff --git a/black-23.3.0.dist-info/licenses/LICENSE b/black-23.3.0.dist-info/licenses/LICENSE new file mode 100644 index 000000000000..7a9b891f713e --- /dev/null +++ b/black-23.3.0.dist-info/licenses/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2018 Łukasz Langa + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/black.exe b/black.exe new file mode 100644 index 0000000000000000000000000000000000000000..f74055198485aefcf17adc1dd93b06af4effaf48 GIT binary patch literal 108472 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 UpoTGHoWJ-&53f5K{G?m{4~&{ni2wiq literal 0 HcmV?d00001 From ba7576afed376a4a8458b5e2a61abac5e2d0ce7f Mon Sep 17 00:00:00 2001 From: "e.abouelkomsan" Date: Thu, 8 Jun 2023 01:33:28 +0200 Subject: [PATCH 11/14] Correct file names --- black-23.3.0.dist-info/INSTALLER | 1 - black-23.3.0.dist-info/METADATA | 1661 ------------------ black-23.3.0.dist-info/RECORD | 118 -- black-23.3.0.dist-info/REQUESTED | 0 black-23.3.0.dist-info/WHEEL | 4 - black-23.3.0.dist-info/entry_points.txt | 3 - black-23.3.0.dist-info/licenses/AUTHORS.md | 195 -- black-23.3.0.dist-info/licenses/LICENSE | 21 - black.exe | Bin 108472 -> 0 bytes _black_version.py => black/_black_version.py | 0 10 files changed, 2003 deletions(-) delete mode 100644 black-23.3.0.dist-info/INSTALLER delete mode 100644 black-23.3.0.dist-info/METADATA delete mode 100644 black-23.3.0.dist-info/RECORD delete mode 100644 black-23.3.0.dist-info/REQUESTED delete mode 100644 black-23.3.0.dist-info/WHEEL delete mode 100644 black-23.3.0.dist-info/entry_points.txt delete mode 100644 black-23.3.0.dist-info/licenses/AUTHORS.md delete mode 100644 black-23.3.0.dist-info/licenses/LICENSE delete mode 100644 black.exe rename _black_version.py => black/_black_version.py (100%) diff --git a/black-23.3.0.dist-info/INSTALLER b/black-23.3.0.dist-info/INSTALLER deleted file mode 100644 index a1b589e38a32..000000000000 --- a/black-23.3.0.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/black-23.3.0.dist-info/METADATA b/black-23.3.0.dist-info/METADATA deleted file mode 100644 index f75a268f5ffd..000000000000 --- a/black-23.3.0.dist-info/METADATA +++ /dev/null @@ -1,1661 +0,0 @@ -Metadata-Version: 2.1 -Name: black -Version: 23.3.0 -Summary: The uncompromising code formatter. -Project-URL: Changelog, https://github.com/psf/black/blob/main/CHANGES.md -Project-URL: Homepage, https://github.com/psf/black -Author-email: Łukasz Langa -License: MIT -License-File: AUTHORS.md -License-File: LICENSE -Keywords: automation,autopep8,formatter,gofmt,pyfmt,rustfmt,yapf -Classifier: Development Status :: 5 - Production/Stable -Classifier: Environment :: Console -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: MIT License -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 3 :: Only -Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Python :: 3.8 -Classifier: Programming Language :: Python :: 3.9 -Classifier: Programming Language :: Python :: 3.10 -Classifier: Programming Language :: Python :: 3.11 -Classifier: Topic :: Software Development :: Libraries :: Python Modules -Classifier: Topic :: Software Development :: Quality Assurance -Requires-Python: >=3.7 -Requires-Dist: click>=8.0.0 -Requires-Dist: mypy-extensions>=0.4.3 -Requires-Dist: packaging>=22.0 -Requires-Dist: pathspec>=0.9.0 -Requires-Dist: platformdirs>=2 -Requires-Dist: tomli>=1.1.0; python_version < '3.11' -Requires-Dist: typed-ast>=1.4.2; python_version < '3.8' and implementation_name == 'cpython' -Requires-Dist: typing-extensions>=3.10.0.0; python_version < '3.10' -Provides-Extra: colorama -Requires-Dist: colorama>=0.4.3; extra == 'colorama' -Provides-Extra: d -Requires-Dist: aiohttp>=3.7.4; extra == 'd' -Provides-Extra: jupyter -Requires-Dist: ipython>=7.8.0; extra == 'jupyter' -Requires-Dist: tokenize-rt>=3.2.0; extra == 'jupyter' -Provides-Extra: uvloop -Requires-Dist: uvloop>=0.15.2; extra == 'uvloop' -Description-Content-Type: text/markdown - -[![Black Logo](https://raw.githubusercontent.com/psf/black/main/docs/_static/logo2-readme.png)](https://black.readthedocs.io/en/stable/) - -

The Uncompromising Code Formatter

- -

-Actions Status -Documentation Status -Coverage Status -License: MIT -PyPI -Downloads -conda-forge -Code style: black -

- -> “Any color you like.” - -_Black_ is the uncompromising Python code formatter. By using it, you agree to cede -control over minutiae of hand-formatting. In return, _Black_ gives you speed, -determinism, and freedom from `pycodestyle` nagging about formatting. You will save time -and mental energy for more important matters. - -Blackened code looks the same regardless of the project you're reading. Formatting -becomes transparent after a while and you can focus on the content instead. - -_Black_ makes code review faster by producing the smallest diffs possible. - -Try it out now using the [Black Playground](https://black.vercel.app). Watch the -[PyCon 2019 talk](https://youtu.be/esZLCuWs_2Y) to learn more. - ---- - -**[Read the documentation on ReadTheDocs!](https://black.readthedocs.io/en/stable)** - ---- - -## Installation and usage - -### Installation - -_Black_ can be installed by running `pip install black`. It requires Python 3.7+ to run. -If you want to format Jupyter Notebooks, install with `pip install "black[jupyter]"`. - -If you can't wait for the latest _hotness_ and want to install from GitHub, use: - -`pip install git+https://github.com/psf/black` - -### Usage - -To get started right away with sensible defaults: - -```sh -black {source_file_or_directory} -``` - -You can run _Black_ as a package if running it as a script doesn't work: - -```sh -python -m black {source_file_or_directory} -``` - -Further information can be found in our docs: - -- [Usage and Configuration](https://black.readthedocs.io/en/stable/usage_and_configuration/index.html) - -_Black_ is already [successfully used](https://github.com/psf/black#used-by) by many -projects, small and big. _Black_ has a comprehensive test suite, with efficient parallel -tests, and our own auto formatting and parallel Continuous Integration runner. Now that -we have become stable, you should not expect large formatting changes in the future. -Stylistic changes will mostly be responses to bug reports and support for new Python -syntax. For more information please refer to the -[The Black Code Style](https://black.readthedocs.io/en/stable/the_black_code_style/index.html). - -Also, as a safety measure which slows down processing, _Black_ will check that the -reformatted code still produces a valid AST that is effectively equivalent to the -original (see the -[Pragmatism](https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html#ast-before-and-after-formatting) -section for details). If you're feeling confident, use `--fast`. - -## The _Black_ code style - -_Black_ is a PEP 8 compliant opinionated formatter. _Black_ reformats entire files in -place. Style configuration options are deliberately limited and rarely added. It doesn't -take previous formatting into account (see -[Pragmatism](https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html#pragmatism) -for exceptions). - -Our documentation covers the current _Black_ code style, but planned changes to it are -also documented. They're both worth taking a look: - -- [The _Black_ Code Style: Current style](https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html) -- [The _Black_ Code Style: Future style](https://black.readthedocs.io/en/stable/the_black_code_style/future_style.html) - -Changes to the _Black_ code style are bound by the Stability Policy: - -- [The _Black_ Code Style: Stability Policy](https://black.readthedocs.io/en/stable/the_black_code_style/index.html#stability-policy) - -Please refer to this document before submitting an issue. What seems like a bug might be -intended behaviour. - -### Pragmatism - -Early versions of _Black_ used to be absolutist in some respects. They took after its -initial author. This was fine at the time as it made the implementation simpler and -there were not many users anyway. Not many edge cases were reported. As a mature tool, -_Black_ does make some exceptions to rules it otherwise holds. - -- [The _Black_ code style: Pragmatism](https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html#pragmatism) - -Please refer to this document before submitting an issue just like with the document -above. What seems like a bug might be intended behaviour. - -## Configuration - -_Black_ is able to read project-specific default values for its command line options -from a `pyproject.toml` file. This is especially useful for specifying custom -`--include` and `--exclude`/`--force-exclude`/`--extend-exclude` patterns for your -project. - -You can find more details in our documentation: - -- [The basics: Configuration via a file](https://black.readthedocs.io/en/stable/usage_and_configuration/the_basics.html#configuration-via-a-file) - -And if you're looking for more general configuration documentation: - -- [Usage and Configuration](https://black.readthedocs.io/en/stable/usage_and_configuration/index.html) - -**Pro-tip**: If you're asking yourself "Do I need to configure anything?" the answer is -"No". _Black_ is all about sensible defaults. Applying those defaults will have your -code in compliance with many other _Black_ formatted projects. - -## Used by - -The following notable open-source projects trust _Black_ with enforcing a consistent -code style: pytest, tox, Pyramid, Django, Django Channels, Hypothesis, attrs, -SQLAlchemy, Poetry, PyPA applications (Warehouse, Bandersnatch, Pipenv, virtualenv), -pandas, Pillow, Twisted, LocalStack, every Datadog Agent Integration, Home Assistant, -Zulip, Kedro, OpenOA, FLORIS, ORBIT, WOMBAT, and many more. - -The following organizations use _Black_: Facebook, Dropbox, KeepTruckin, Mozilla, Quora, -Duolingo, QuantumBlack, Tesla, Archer Aviation. - -Are we missing anyone? Let us know. - -## Testimonials - -**Mike Bayer**, [author of `SQLAlchemy`](https://www.sqlalchemy.org/): - -> I can't think of any single tool in my entire programming career that has given me a -> bigger productivity increase by its introduction. I can now do refactorings in about -> 1% of the keystrokes that it would have taken me previously when we had no way for -> code to format itself. - -**Dusty Phillips**, -[writer](https://smile.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=dusty+phillips): - -> _Black_ is opinionated so you don't have to be. - -**Hynek Schlawack**, [creator of `attrs`](https://www.attrs.org/), core developer of -Twisted and CPython: - -> An auto-formatter that doesn't suck is all I want for Xmas! - -**Carl Meyer**, [Django](https://www.djangoproject.com/) core developer: - -> At least the name is good. - -**Kenneth Reitz**, creator of [`requests`](https://requests.readthedocs.io/en/latest/) -and [`pipenv`](https://readthedocs.org/projects/pipenv/): - -> This vastly improves the formatting of our code. Thanks a ton! - -## Show your style - -Use the badge in your project's README.md: - -```md -[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) -``` - -Using the badge in README.rst: - -``` -.. image:: https://img.shields.io/badge/code%20style-black-000000.svg - :target: https://github.com/psf/black -``` - -Looks like this: -[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) - -## License - -MIT - -## Contributing - -Welcome! Happy to see you willing to make the project better. You can get started by -reading this: - -- [Contributing: The basics](https://black.readthedocs.io/en/latest/contributing/the_basics.html) - -You can also take a look at the rest of the contributing docs or talk with the -developers: - -- [Contributing documentation](https://black.readthedocs.io/en/latest/contributing/index.html) -- [Chat on Discord](https://discord.gg/RtVdv86PrH) - -## Change log - -The log has become rather long. It moved to its own file. - -See [CHANGES](https://black.readthedocs.io/en/latest/change_log.html). - -## Authors - -The author list is quite long nowadays, so it lives in its own file. - -See [AUTHORS.md](./AUTHORS.md) - -## Code of Conduct - -Everyone participating in the _Black_ project, and in particular in the issue tracker, -pull requests, and social media activity, is expected to treat other people with respect -and more generally to follow the guidelines articulated in the -[Python Community Code of Conduct](https://www.python.org/psf/codeofconduct/). - -At the same time, humor is encouraged. In fact, basic familiarity with Monty Python's -Flying Circus is expected. We are not savages. - -And if you _really_ need to slap somebody, do it with a fish while dancing. -# Change Log - -## Unreleased - -### Highlights - - - -### Stable style - - - -### Preview style - - - -### Configuration - - - -### Packaging - - - -### Parser - - - -### Performance - - - -### Output - - - -### _Blackd_ - - - -### Integrations - - - -### Documentation - - - -## 23.3.0 - -### Highlights - -This release fixes a longstanding confusing behavior in Black's GitHub action, where the -version of the action did not determine the version of Black being run (issue #3382). In -addition, there is a small bug fix around imports and a number of improvements to the -preview style. - -Please try out the -[preview style](https://black.readthedocs.io/en/stable/the_black_code_style/future_style.html#preview-style) -with `black --preview` and tell us your feedback. All changes in the preview style are -expected to become part of Black's stable style in January 2024. - -### Stable style - -- Import lines with `# fmt: skip` and `# fmt: off` no longer have an extra blank line - added when they are right after another import line (#3610) - -### Preview style - -- Add trailing commas to collection literals even if there's a comment after the last - entry (#3393) -- `async def`, `async for`, and `async with` statements are now formatted consistently - compared to their non-async version. (#3609) -- `with` statements that contain two context managers will be consistently wrapped in - parentheses (#3589) -- Let string splitters respect [East Asian Width](https://www.unicode.org/reports/tr11/) - (#3445) -- Now long string literals can be split after East Asian commas and periods (`、` U+3001 - IDEOGRAPHIC COMMA, `。` U+3002 IDEOGRAPHIC FULL STOP, & `,` U+FF0C FULLWIDTH COMMA) - besides before spaces (#3445) -- For stubs, enforce one blank line after a nested class with a body other than just - `...` (#3564) -- Improve handling of multiline strings by changing line split behavior (#1879) - -### Parser - -- Added support for formatting files with invalid type comments (#3594) - -### Integrations - -- Update GitHub Action to use the version of Black equivalent to action's version if - version input is not specified (#3543) -- Fix missing Python binary path in autoload script for vim (#3508) - -### Documentation - -- Document that only the most recent release is supported for security issues; - vulnerabilities should be reported through Tidelift (#3612) - -## 23.1.0 - -### Highlights - -This is the first release of 2023, and following our -[stability policy](https://black.readthedocs.io/en/stable/the_black_code_style/index.html#stability-policy), -it comes with a number of improvements to our stable style, including improvements to -empty line handling, removal of redundant parentheses in several contexts, and output -that highlights implicitly concatenated strings better. - -There are also many changes to the preview style; try out `black --preview` and give us -feedback to help us set the stable style for next year. - -In addition to style changes, Black now automatically infers the supported Python -versions from your `pyproject.toml` file, removing the need to set Black's target -versions separately. - -### Stable style - - - -- Introduce the 2023 stable style, which incorporates most aspects of last year's - preview style (#3418). Specific changes: - - Enforce empty lines before classes and functions with sticky leading comments - (#3302) (22.12.0) - - Reformat empty and whitespace-only files as either an empty file (if no newline is - present) or as a single newline character (if a newline is present) (#3348) - (22.12.0) - - Implicitly concatenated strings used as function args are now wrapped inside - parentheses (#3307) (22.12.0) - - Correctly handle trailing commas that are inside a line's leading non-nested parens - (#3370) (22.12.0) - - `--skip-string-normalization` / `-S` now prevents docstring prefixes from being - normalized as expected (#3168) (since 22.8.0) - - When using `--skip-magic-trailing-comma` or `-C`, trailing commas are stripped from - subscript expressions with more than 1 element (#3209) (22.8.0) - - Implicitly concatenated strings inside a list, set, or tuple are now wrapped inside - parentheses (#3162) (22.8.0) - - Fix a string merging/split issue when a comment is present in the middle of - implicitly concatenated strings on its own line (#3227) (22.8.0) - - Docstring quotes are no longer moved if it would violate the line length limit - (#3044, #3430) (22.6.0) - - Parentheses around return annotations are now managed (#2990) (22.6.0) - - Remove unnecessary parentheses around awaited objects (#2991) (22.6.0) - - Remove unnecessary parentheses in `with` statements (#2926) (22.6.0) - - Remove trailing newlines after code block open (#3035) (22.6.0) - - Code cell separators `#%%` are now standardised to `# %%` (#2919) (22.3.0) - - Remove unnecessary parentheses from `except` statements (#2939) (22.3.0) - - Remove unnecessary parentheses from tuple unpacking in `for` loops (#2945) (22.3.0) - - Avoid magic-trailing-comma in single-element subscripts (#2942) (22.3.0) -- Fix a crash when a colon line is marked between `# fmt: off` and `# fmt: on` (#3439) - -### Preview style - - - -- Format hex codes in unicode escape sequences in string literals (#2916) -- Add parentheses around `if`-`else` expressions (#2278) -- Improve performance on large expressions that contain many strings (#3467) -- Fix a crash in preview style with assert + parenthesized string (#3415) -- Fix crashes in preview style with walrus operators used in function return annotations - and except clauses (#3423) -- Fix a crash in preview advanced string processing where mixed implicitly concatenated - regular and f-strings start with an empty span (#3463) -- Fix a crash in preview advanced string processing where a standalone comment is placed - before a dict's value (#3469) -- Fix an issue where extra empty lines are added when a decorator has `# fmt: skip` - applied or there is a standalone comment between decorators (#3470) -- Do not put the closing quotes in a docstring on a separate line, even if the line is - too long (#3430) -- Long values in dict literals are now wrapped in parentheses; correspondingly - unnecessary parentheses around short values in dict literals are now removed; long - string lambda values are now wrapped in parentheses (#3440) -- Fix two crashes in preview style involving edge cases with docstrings (#3451) -- Exclude string type annotations from improved string processing; fix crash when the - return type annotation is stringified and spans across multiple lines (#3462) -- Wrap multiple context managers in parentheses when targeting Python 3.9+ (#3489) -- Fix several crashes in preview style with walrus operators used in `with` statements - or tuples (#3473) -- Fix an invalid quote escaping bug in f-string expressions where it produced invalid - code. Implicitly concatenated f-strings with different quotes can now be merged or - quote-normalized by changing the quotes used in expressions. (#3509) -- Fix crash on `await (yield)` when Black is compiled with mypyc (#3533) - -### Configuration - - - -- Black now tries to infer its `--target-version` from the project metadata specified in - `pyproject.toml` (#3219) - -### Packaging - - - -- Upgrade mypyc from `0.971` to `0.991` so mypycified _Black_ can be built on armv7 - (#3380) - - This also fixes some crashes while using compiled Black with a debug build of - CPython -- Drop specific support for the `tomli` requirement on 3.11 alpha releases, working - around a bug that would cause the requirement not to be installed on any non-final - Python releases (#3448) -- Black now depends on `packaging` version `22.0` or later. This is required for new - functionality that needs to parse part of the project metadata (#3219) - -### Output - - - -- Calling `black --help` multiple times will return the same help contents each time - (#3516) -- Verbose logging now shows the values of `pyproject.toml` configuration variables - (#3392) -- Fix false symlink detection messages in verbose output due to using an incorrect - relative path to the project root (#3385) - -### Integrations - - - -- Move 3.11 CI to normal flow now that all dependencies support 3.11 (#3446) -- Docker: Add new `latest_prerelease` tag automation to follow latest black alpha - release on docker images (#3465) - -### Documentation - - - -- Expand `vim-plug` installation instructions to offer more explicit options (#3468) - -## 22.12.0 - -### Preview style - - - -- Enforce empty lines before classes and functions with sticky leading comments (#3302) -- Reformat empty and whitespace-only files as either an empty file (if no newline is - present) or as a single newline character (if a newline is present) (#3348) -- Implicitly concatenated strings used as function args are now wrapped inside - parentheses (#3307) -- For assignment statements, prefer splitting the right hand side if the left hand side - fits on a single line (#3368) -- Correctly handle trailing commas that are inside a line's leading non-nested parens - (#3370) - -### Configuration - - - -- Fix incorrectly applied `.gitignore` rules by considering the `.gitignore` location - and the relative path to the target file (#3338) -- Fix incorrectly ignoring `.gitignore` presence when more than one source directory is - specified (#3336) - -### Parser - - - -- Parsing support has been added for walruses inside generator expression that are - passed as function args (for example, - `any(match := my_re.match(text) for text in texts)`) (#3327). - -### Integrations - - - -- Vim plugin: Optionally allow using the system installation of Black via - `let g:black_use_virtualenv = 0`(#3309) - -## 22.10.0 - -### Highlights - -- Runtime support for Python 3.6 has been removed. Formatting 3.6 code will still be - supported until further notice. - -### Stable style - -- Fix a crash when `# fmt: on` is used on a different block level than `# fmt: off` - (#3281) - -### Preview style - -- Fix a crash when formatting some dicts with parenthesis-wrapped long string keys - (#3262) - -### Configuration - -- `.ipynb_checkpoints` directories are now excluded by default (#3293) -- Add `--skip-source-first-line` / `-x` option to ignore the first line of source code - while formatting (#3299) - -### Packaging - -- Executables made with PyInstaller will no longer crash when formatting several files - at once on macOS. Native x86-64 executables for macOS are available once again. - (#3275) -- Hatchling is now used as the build backend. This will not have any effect for users - who install Black with its wheels from PyPI. (#3233) -- Faster compiled wheels are now available for CPython 3.11 (#3276) - -### _Blackd_ - -- Windows style (CRLF) newlines will be preserved (#3257). - -### Integrations - -- Vim plugin: add flag (`g:black_preview`) to enable/disable the preview style (#3246) -- Update GitHub Action to support formatting of Jupyter Notebook files via a `jupyter` - option (#3282) -- Update GitHub Action to support use of version specifiers (e.g. `<23`) for Black - version (#3265) - -## 22.8.0 - -### Highlights - -- Python 3.11 is now supported, except for _blackd_ as aiohttp does not support 3.11 as - of publishing (#3234) -- This is the last release that supports running _Black_ on Python 3.6 (formatting 3.6 - code will continue to be supported until further notice) -- Reword the stability policy to say that we may, in rare cases, make changes that - affect code that was not previously formatted by _Black_ (#3155) - -### Stable style - -- Fix an infinite loop when using `# fmt: on/off` in the middle of an expression or code - block (#3158) -- Fix incorrect handling of `# fmt: skip` on colon (`:`) lines (#3148) -- Comments are no longer deleted when a line had spaces removed around power operators - (#2874) - -### Preview style - -- Single-character closing docstring quotes are no longer moved to their own line as - this is invalid. This was a bug introduced in version 22.6.0. (#3166) -- `--skip-string-normalization` / `-S` now prevents docstring prefixes from being - normalized as expected (#3168) -- When using `--skip-magic-trailing-comma` or `-C`, trailing commas are stripped from - subscript expressions with more than 1 element (#3209) -- Implicitly concatenated strings inside a list, set, or tuple are now wrapped inside - parentheses (#3162) -- Fix a string merging/split issue when a comment is present in the middle of implicitly - concatenated strings on its own line (#3227) - -### _Blackd_ - -- `blackd` now supports enabling the preview style via the `X-Preview` header (#3217) - -### Configuration - -- Black now uses the presence of debug f-strings to detect target version (#3215) -- Fix misdetection of project root and verbose logging of sources in cases involving - `--stdin-filename` (#3216) -- Immediate `.gitignore` files in source directories given on the command line are now - also respected, previously only `.gitignore` files in the project root and - automatically discovered directories were respected (#3237) - -### Documentation - -- Recommend using BlackConnect in IntelliJ IDEs (#3150) - -### Integrations - -- Vim plugin: prefix messages with `Black: ` so it's clear they come from Black (#3194) -- Docker: changed to a /opt/venv installation + added to PATH to be available to - non-root users (#3202) - -### Output - -- Change from deprecated `asyncio.get_event_loop()` to create our event loop which - removes DeprecationWarning (#3164) -- Remove logging from internal `blib2to3` library since it regularly emits error logs - about failed caching that can and should be ignored (#3193) - -### Parser - -- Type comments are now included in the AST equivalence check consistently so accidental - deletion raises an error. Though type comments can't be tracked when running on PyPy - 3.7 due to standard library limitations. (#2874) - -### Performance - -- Reduce Black's startup time when formatting a single file by 15-30% (#3211) - -## 22.6.0 - -### Style - -- Fix unstable formatting involving `#fmt: skip` and `# fmt:skip` comments (notice the - lack of spaces) (#2970) - -### Preview style - -- Docstring quotes are no longer moved if it would violate the line length limit (#3044) -- Parentheses around return annotations are now managed (#2990) -- Remove unnecessary parentheses around awaited objects (#2991) -- Remove unnecessary parentheses in `with` statements (#2926) -- Remove trailing newlines after code block open (#3035) - -### Integrations - -- Add `scripts/migrate-black.py` script to ease introduction of Black to a Git project - (#3038) - -### Output - -- Output Python version and implementation as part of `--version` flag (#2997) - -### Packaging - -- Use `tomli` instead of `tomllib` on Python 3.11 builds where `tomllib` is not - available (#2987) - -### Parser - -- [PEP 654](https://peps.python.org/pep-0654/#except) syntax (for example, - `except *ExceptionGroup:`) is now supported (#3016) -- [PEP 646](https://peps.python.org/pep-0646) syntax (for example, - `Array[Batch, *Shape]` or `def fn(*args: *T) -> None`) is now supported (#3071) - -### Vim Plugin - -- Fix `strtobool` function. It didn't parse true/on/false/off. (#3025) - -## 22.3.0 - -### Preview style - -- Code cell separators `#%%` are now standardised to `# %%` (#2919) -- Remove unnecessary parentheses from `except` statements (#2939) -- Remove unnecessary parentheses from tuple unpacking in `for` loops (#2945) -- Avoid magic-trailing-comma in single-element subscripts (#2942) - -### Configuration - -- Do not format `__pypackages__` directories by default (#2836) -- Add support for specifying stable version with `--required-version` (#2832). -- Avoid crashing when the user has no homedir (#2814) -- Avoid crashing when md5 is not available (#2905) -- Fix handling of directory junctions on Windows (#2904) - -### Documentation - -- Update pylint config documentation (#2931) - -### Integrations - -- Move test to disable plugin in Vim/Neovim, which speeds up loading (#2896) - -### Output - -- In verbose mode, log when _Black_ is using user-level config (#2861) - -### Packaging - -- Fix Black to work with Click 8.1.0 (#2966) -- On Python 3.11 and newer, use the standard library's `tomllib` instead of `tomli` - (#2903) -- `black-primer`, the deprecated internal devtool, has been removed and copied to a - [separate repository](https://github.com/cooperlees/black-primer) (#2924) - -### Parser - -- Black can now parse starred expressions in the target of `for` and `async for` - statements, e.g `for item in *items_1, *items_2: pass` (#2879). - -## 22.1.0 - -At long last, _Black_ is no longer a beta product! This is the first non-beta release -and the first release covered by our new -[stability policy](https://black.readthedocs.io/en/stable/the_black_code_style/index.html#stability-policy). - -### Highlights - -- **Remove Python 2 support** (#2740) -- Introduce the `--preview` flag (#2752) - -### Style - -- Deprecate `--experimental-string-processing` and move the functionality under - `--preview` (#2789) -- For stubs, one blank line between class attributes and methods is now kept if there's - at least one pre-existing blank line (#2736) -- Black now normalizes string prefix order (#2297) -- Remove spaces around power operators if both operands are simple (#2726) -- Work around bug that causes unstable formatting in some cases in the presence of the - magic trailing comma (#2807) -- Use parentheses for attribute access on decimal float and int literals (#2799) -- Don't add whitespace for attribute access on hexadecimal, binary, octal, and complex - literals (#2799) -- Treat blank lines in stubs the same inside top-level `if` statements (#2820) -- Fix unstable formatting with semicolons and arithmetic expressions (#2817) -- Fix unstable formatting around magic trailing comma (#2572) - -### Parser - -- Fix mapping cases that contain as-expressions, like `case {"key": 1 | 2 as password}` - (#2686) -- Fix cases that contain multiple top-level as-expressions, like `case 1 as a, 2 as b` - (#2716) -- Fix call patterns that contain as-expressions with keyword arguments, like - `case Foo(bar=baz as quux)` (#2749) -- Tuple unpacking on `return` and `yield` constructs now implies 3.8+ (#2700) -- Unparenthesized tuples on annotated assignments (e.g - `values: Tuple[int, ...] = 1, 2, 3`) now implies 3.8+ (#2708) -- Fix handling of standalone `match()` or `case()` when there is a trailing newline or a - comment inside of the parentheses. (#2760) -- `from __future__ import annotations` statement now implies Python 3.7+ (#2690) - -### Performance - -- Speed-up the new backtracking parser about 4X in general (enabled when - `--target-version` is set to 3.10 and higher). (#2728) -- _Black_ is now compiled with [mypyc](https://github.com/mypyc/mypyc) for an overall 2x - speed-up. 64-bit Windows, MacOS, and Linux (not including musl) are supported. (#1009, - #2431) - -### Configuration - -- Do not accept bare carriage return line endings in pyproject.toml (#2408) -- Add configuration option (`python-cell-magics`) to format cells with custom magics in - Jupyter Notebooks (#2744) -- Allow setting custom cache directory on all platforms with environment variable - `BLACK_CACHE_DIR` (#2739). -- Enable Python 3.10+ by default, without any extra need to specify - `--target-version=py310`. (#2758) -- Make passing `SRC` or `--code` mandatory and mutually exclusive (#2804) - -### Output - -- Improve error message for invalid regular expression (#2678) -- Improve error message when parsing fails during AST safety check by embedding the - underlying SyntaxError (#2693) -- No longer color diff headers white as it's unreadable in light themed terminals - (#2691) -- Text coloring added in the final statistics (#2712) -- Verbose mode also now describes how a project root was discovered and which paths will - be formatted. (#2526) - -### Packaging - -- All upper version bounds on dependencies have been removed (#2718) -- `typing-extensions` is no longer a required dependency in Python 3.10+ (#2772) -- Set `click` lower bound to `8.0.0` (#2791) - -### Integrations - -- Update GitHub action to support containerized runs (#2748) - -### Documentation - -- Change protocol in pip installation instructions to `https://` (#2761) -- Change HTML theme to Furo primarily for its responsive design and mobile support - (#2793) -- Deprecate the `black-primer` tool (#2809) -- Document Python support policy (#2819) - -## 21.12b0 - -### _Black_ - -- Fix determination of f-string expression spans (#2654) -- Fix bad formatting of error messages about EOF in multi-line statements (#2343) -- Functions and classes in blocks now have more consistent surrounding spacing (#2472) - -#### Jupyter Notebook support - -- Cell magics are now only processed if they are known Python cell magics. Earlier, all - cell magics were tokenized, leading to possible indentation errors e.g. with - `%%writefile`. (#2630) -- Fix assignment to environment variables in Jupyter Notebooks (#2642) - -#### Python 3.10 support - -- Point users to using `--target-version py310` if we detect 3.10-only syntax (#2668) -- Fix `match` statements with open sequence subjects, like `match a, b:` or - `match a, *b:` (#2639) (#2659) -- Fix `match`/`case` statements that contain `match`/`case` soft keywords multiple - times, like `match re.match()` (#2661) -- Fix `case` statements with an inline body (#2665) -- Fix styling of starred expressions inside `match` subject (#2667) -- Fix parser error location on invalid syntax in a `match` statement (#2649) -- Fix Python 3.10 support on platforms without ProcessPoolExecutor (#2631) -- Improve parsing performance on code that uses `match` under `--target-version py310` - up to ~50% (#2670) - -### Packaging - -- Remove dependency on `regex` (#2644) (#2663) - -## 21.11b1 - -### _Black_ - -- Bumped regex version minimum to 2021.4.4 to fix Pattern class usage (#2621) - -## 21.11b0 - -### _Black_ - -- Warn about Python 2 deprecation in more cases by improving Python 2 only syntax - detection (#2592) -- Add experimental PyPy support (#2559) -- Add partial support for the match statement. As it's experimental, it's only enabled - when `--target-version py310` is explicitly specified (#2586) -- Add support for parenthesized with (#2586) -- Declare support for Python 3.10 for running Black (#2562) - -### Integrations - -- Fixed vim plugin with Python 3.10 by removing deprecated distutils import (#2610) -- The vim plugin now parses `skip_magic_trailing_comma` from pyproject.toml (#2613) - -## 21.10b0 - -### _Black_ - -- Document stability policy, that will apply for non-beta releases (#2529) -- Add new `--workers` parameter (#2514) -- Fixed feature detection for positional-only arguments in lambdas (#2532) -- Bumped typed-ast version minimum to 1.4.3 for 3.10 compatibility (#2519) -- Fixed a Python 3.10 compatibility issue where the loop argument was still being passed - even though it has been removed (#2580) -- Deprecate Python 2 formatting support (#2523) - -### _Blackd_ - -- Remove dependency on aiohttp-cors (#2500) -- Bump required aiohttp version to 3.7.4 (#2509) - -### _Black-Primer_ - -- Add primer support for --projects (#2555) -- Print primer summary after individual failures (#2570) - -### Integrations - -- Allow to pass `target_version` in the vim plugin (#1319) -- Install build tools in docker file and use multi-stage build to keep the image size - down (#2582) - -## 21.9b0 - -### Packaging - -- Fix missing modules in self-contained binaries (#2466) -- Fix missing toml extra used during installation (#2475) - -## 21.8b0 - -### _Black_ - -- Add support for formatting Jupyter Notebook files (#2357) -- Move from `appdirs` dependency to `platformdirs` (#2375) -- Present a more user-friendly error if .gitignore is invalid (#2414) -- The failsafe for accidentally added backslashes in f-string expressions has been - hardened to handle more edge cases during quote normalization (#2437) -- Avoid changing a function return type annotation's type to a tuple by adding a - trailing comma (#2384) -- Parsing support has been added for unparenthesized walruses in set literals, set - comprehensions, and indices (#2447). -- Pin `setuptools-scm` build-time dependency version (#2457) -- Exclude typing-extensions version 3.10.0.1 due to it being broken on Python 3.10 - (#2460) - -### _Blackd_ - -- Replace sys.exit(-1) with raise ImportError as it plays more nicely with tools that - scan installed packages (#2440) - -### Integrations - -- The provided pre-commit hooks no longer specify `language_version` to avoid overriding - `default_language_version` (#2430) - -## 21.7b0 - -### _Black_ - -- Configuration files using TOML features higher than spec v0.5.0 are now supported - (#2301) -- Add primer support and test for code piped into black via STDIN (#2315) -- Fix internal error when `FORCE_OPTIONAL_PARENTHESES` feature is enabled (#2332) -- Accept empty stdin (#2346) -- Provide a more useful error when parsing fails during AST safety checks (#2304) - -### Docker - -- Add new `latest_release` tag automation to follow latest black release on docker - images (#2374) - -### Integrations - -- The vim plugin now searches upwards from the directory containing the current buffer - instead of the current working directory for pyproject.toml. (#1871) -- The vim plugin now reads the correct string normalization option in pyproject.toml - (#1869) -- The vim plugin no longer crashes Black when there's boolean values in pyproject.toml - (#1869) - -## 21.6b0 - -### _Black_ - -- Fix failure caused by `fmt: skip` and indentation (#2281) -- Account for += assignment when deciding whether to split string (#2312) -- Correct max string length calculation when there are string operators (#2292) -- Fixed option usage when using the `--code` flag (#2259) -- Do not call `uvloop.install()` when _Black_ is used as a library (#2303) -- Added `--required-version` option to require a specific version to be running (#2300) -- Fix incorrect custom breakpoint indices when string group contains fake f-strings - (#2311) -- Fix regression where `R` prefixes would be lowercased for docstrings (#2285) -- Fix handling of named escapes (`\N{...}`) when `--experimental-string-processing` is - used (#2319) - -### Integrations - -- The official Black action now supports choosing what version to use, and supports the - major 3 OSes. (#1940) - -## 21.5b2 - -### _Black_ - -- A space is no longer inserted into empty docstrings (#2249) -- Fix handling of .gitignore files containing non-ASCII characters on Windows (#2229) -- Respect `.gitignore` files in all levels, not only `root/.gitignore` file (apply - `.gitignore` rules like `git` does) (#2225) -- Restored compatibility with Click 8.0 on Python 3.6 when LANG=C used (#2227) -- Add extra uvloop install + import support if in python env (#2258) -- Fix --experimental-string-processing crash when matching parens are not found (#2283) -- Make sure to split lines that start with a string operator (#2286) -- Fix regular expression that black uses to identify f-expressions (#2287) - -### _Blackd_ - -- Add a lower bound for the `aiohttp-cors` dependency. Only 0.4.0 or higher is - supported. (#2231) - -### Packaging - -- Release self-contained x86_64 MacOS binaries as part of the GitHub release pipeline - (#2198) -- Always build binaries with the latest available Python (#2260) - -### Documentation - -- Add discussion of magic comments to FAQ page (#2272) -- `--experimental-string-processing` will be enabled by default in the future (#2273) -- Fix typos discovered by codespell (#2228) -- Fix Vim plugin installation instructions. (#2235) -- Add new Frequently Asked Questions page (#2247) -- Fix encoding + symlink issues preventing proper build on Windows (#2262) - -## 21.5b1 - -### _Black_ - -- Refactor `src/black/__init__.py` into many files (#2206) - -### Documentation - -- Replaced all remaining references to the - [`master`](https://github.com/psf/black/tree/main) branch with the - [`main`](https://github.com/psf/black/tree/main) branch. Some additional changes in - the source code were also made. (#2210) -- Sigificantly reorganized the documentation to make much more sense. Check them out by - heading over to [the stable docs on RTD](https://black.readthedocs.io/en/stable/). - (#2174) - -## 21.5b0 - -### _Black_ - -- Set `--pyi` mode if `--stdin-filename` ends in `.pyi` (#2169) -- Stop detecting target version as Python 3.9+ with pre-PEP-614 decorators that are - being called but with no arguments (#2182) - -### _Black-Primer_ - -- Add `--no-diff` to black-primer to suppress formatting changes (#2187) - -## 21.4b2 - -### _Black_ - -- Fix crash if the user configuration directory is inaccessible. (#2158) - -- Clarify - [circumstances](https://github.com/psf/black/blob/master/docs/the_black_code_style.md#pragmatism) - in which _Black_ may change the AST (#2159) - -- Allow `.gitignore` rules to be overridden by specifying `exclude` in `pyproject.toml` - or on the command line. (#2170) - -### _Packaging_ - -- Install `primer.json` (used by `black-primer` by default) with black. (#2154) - -## 21.4b1 - -### _Black_ - -- Fix crash on docstrings ending with "\\ ". (#2142) - -- Fix crash when atypical whitespace is cleaned out of dostrings (#2120) - -- Reflect the `--skip-magic-trailing-comma` and `--experimental-string-processing` flags - in the name of the cache file. Without this fix, changes in these flags would not take - effect if the cache had already been populated. (#2131) - -- Don't remove necessary parentheses from assignment expression containing assert / - return statements. (#2143) - -### _Packaging_ - -- Bump pathspec to >= 0.8.1 to solve invalid .gitignore exclusion handling - -## 21.4b0 - -### _Black_ - -- Fixed a rare but annoying formatting instability created by the combination of - optional trailing commas inserted by `Black` and optional parentheses looking at - pre-existing "magic" trailing commas. This fixes issue #1629 and all of its many many - duplicates. (#2126) - -- `Black` now processes one-line docstrings by stripping leading and trailing spaces, - and adding a padding space when needed to break up """". (#1740) - -- `Black` now cleans up leading non-breaking spaces in comments (#2092) - -- `Black` now respects `--skip-string-normalization` when normalizing multiline - docstring quotes (#1637) - -- `Black` no longer removes all empty lines between non-function code and decorators - when formatting typing stubs. Now `Black` enforces a single empty line. (#1646) - -- `Black` no longer adds an incorrect space after a parenthesized assignment expression - in if/while statements (#1655) - -- Added `--skip-magic-trailing-comma` / `-C` to avoid using trailing commas as a reason - to split lines (#1824) - -- fixed a crash when PWD=/ on POSIX (#1631) - -- fixed "I/O operation on closed file" when using --diff (#1664) - -- Prevent coloured diff output being interleaved with multiple files (#1673) - -- Added support for PEP 614 relaxed decorator syntax on python 3.9 (#1711) - -- Added parsing support for unparenthesized tuples and yield expressions in annotated - assignments (#1835) - -- added `--extend-exclude` argument (PR #2005) - -- speed up caching by avoiding pathlib (#1950) - -- `--diff` correctly indicates when a file doesn't end in a newline (#1662) - -- Added `--stdin-filename` argument to allow stdin to respect `--force-exclude` rules - (#1780) - -- Lines ending with `fmt: skip` will now be not formatted (#1800) - -- PR #2053: Black no longer relies on typed-ast for Python 3.8 and higher - -- PR #2053: Python 2 support is now optional, install with - `python3 -m pip install black[python2]` to maintain support. - -- Exclude `venv` directory by default (#1683) - -- Fixed "Black produced code that is not equivalent to the source" when formatting - Python 2 docstrings (#2037) - -### _Packaging_ - -- Self-contained native _Black_ binaries are now provided for releases via GitHub - Releases (#1743) - -## 20.8b1 - -### _Packaging_ - -- explicitly depend on Click 7.1.2 or newer as `Black` no longer works with versions - older than 7.0 - -## 20.8b0 - -### _Black_ - -- re-implemented support for explicit trailing commas: now it works consistently within - any bracket pair, including nested structures (#1288 and duplicates) - -- `Black` now reindents docstrings when reindenting code around it (#1053) - -- `Black` now shows colored diffs (#1266) - -- `Black` is now packaged using 'py3' tagged wheels (#1388) - -- `Black` now supports Python 3.8 code, e.g. star expressions in return statements - (#1121) - -- `Black` no longer normalizes capital R-string prefixes as those have a - community-accepted meaning (#1244) - -- `Black` now uses exit code 2 when specified configuration file doesn't exit (#1361) - -- `Black` now works on AWS Lambda (#1141) - -- added `--force-exclude` argument (#1032) - -- removed deprecated `--py36` option (#1236) - -- fixed `--diff` output when EOF is encountered (#526) - -- fixed `# fmt: off` handling around decorators (#560) - -- fixed unstable formatting with some `# type: ignore` comments (#1113) - -- fixed invalid removal on organizing brackets followed by indexing (#1575) - -- introduced `black-primer`, a CI tool that allows us to run regression tests against - existing open source users of Black (#1402) - -- introduced property-based fuzzing to our test suite based on Hypothesis and - Hypothersmith (#1566) - -- implemented experimental and disabled by default long string rewrapping (#1132), - hidden under a `--experimental-string-processing` flag while it's being worked on; - this is an undocumented and unsupported feature, you lose Internet points for - depending on it (#1609) - -### Vim plugin - -- prefer virtualenv packages over global packages (#1383) - -## 19.10b0 - -- added support for PEP 572 assignment expressions (#711) - -- added support for PEP 570 positional-only arguments (#943) - -- added support for async generators (#593) - -- added support for pre-splitting collections by putting an explicit trailing comma - inside (#826) - -- added `black -c` as a way to format code passed from the command line (#761) - -- --safe now works with Python 2 code (#840) - -- fixed grammar selection for Python 2-specific code (#765) - -- fixed feature detection for trailing commas in function definitions and call sites - (#763) - -- `# fmt: off`/`# fmt: on` comment pairs placed multiple times within the same block of - code now behave correctly (#1005) - -- _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) - -- _Black_ no longer crashes on Python 3.7 on some platform configurations (#494) - -- _Black_ no longer fails on comments in from-imports (#671) - -- _Black_ no longer fails when the file starts with a backslash (#922) - -- _Black_ no longer merges regular comments with type comments (#1027) - -- _Black_ no longer splits long lines that contain type comments (#997) - -- removed unnecessary parentheses around `yield` expressions (#834) - -- added parentheses around long tuples in unpacking assignments (#832) - -- added parentheses around complex powers when they are prefixed by a unary operator - (#646) - -- 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) - -- `blackd` now returns the version of _Black_ in the response headers (#1013) - -- `blackd` can now output the diff of formats on source code when the `X-Diff` header is - provided (#969) - -## 19.3b0 - -- new option `--target-version` to control which Python versions _Black_-formatted code - should target (#618) - -- deprecated `--py36` (use `--target-version=py36` instead) (#724) - -- _Black_ no longer normalizes numeric literals to include `_` separators (#696) - -- long `del` statements are now split into multiple lines (#698) - -- type comments are no longer mangled in function signatures - -- improved performance of formatting deeply nested data structures (#509) - -- _Black_ now properly formats multiple files in parallel on Windows (#632) - -- _Black_ now creates cache files atomically which allows it to be used in parallel - pipelines (like `xargs -P8`) (#673) - -- _Black_ now correctly indents comments in files that were previously formatted with - tabs (#262) - -- `blackd` now supports CORS (#622) - -## 18.9b0 - -- numeric literals are now formatted by _Black_ (#452, #461, #464, #469): - - - numeric literals are normalized to include `_` separators on Python 3.6+ code - - - added `--skip-numeric-underscore-normalization` to disable the above behavior and - leave numeric underscores as they were in the input - - - code with `_` in numeric literals is recognized as Python 3.6+ - - - most letters in numeric literals are lowercased (e.g., in `1e10`, `0x01`) - - - hexadecimal digits are always uppercased (e.g. `0xBADC0DE`) - -- added `blackd`, see - [its documentation](https://github.com/psf/black/blob/18.9b0/README.md#blackd) for - more info (#349) - -- adjacent string literals are now correctly split into multiple lines (#463) - -- trailing comma is now added to single imports that don't fit on a line (#250) - -- cache is now populated when `--check` is successful for a file which speeds up - consecutive checks of properly formatted unmodified files (#448) - -- whitespace at the beginning of the file is now removed (#399) - -- fixed mangling [pweave](http://mpastell.com/pweave/) and - [Spyder IDE](https://www.spyder-ide.org/) special comments (#532) - -- fixed unstable formatting when unpacking big tuples (#267) - -- fixed parsing of `__future__` imports with renames (#389) - -- fixed scope of `# fmt: off` when directly preceding `yield` and other nodes (#385) - -- fixed formatting of lambda expressions with default arguments (#468) - -- fixed `async for` statements: _Black_ no longer breaks them into separate lines (#372) - -- note: the Vim plugin stopped registering `,=` as a default chord as it turned out to - be a bad idea (#415) - -## 18.6b4 - -- hotfix: don't freeze when multiple comments directly precede `# fmt: off` (#371) - -## 18.6b3 - -- typing stub files (`.pyi`) now have blank lines added after constants (#340) - -- `# fmt: off` and `# fmt: on` are now much more dependable: - - - they now work also within bracket pairs (#329) - - - they now correctly work across function/class boundaries (#335) - - - they now work when an indentation block starts with empty lines or misaligned - comments (#334) - -- made Click not fail on invalid environments; note that Click is right but the - likelihood we'll need to access non-ASCII file paths when dealing with Python source - code is low (#277) - -- fixed improper formatting of f-strings with quotes inside interpolated expressions - (#322) - -- fixed unnecessary slowdown when long list literals where found in a file - -- fixed unnecessary slowdown on AST nodes with very many siblings - -- fixed cannibalizing backslashes during string normalization - -- fixed a crash due to symbolic links pointing outside of the project directory (#338) - -## 18.6b2 - -- added `--config` (#65) - -- added `-h` equivalent to `--help` (#316) - -- fixed improper unmodified file caching when `-S` was used - -- fixed extra space in string unpacking (#305) - -- fixed formatting of empty triple quoted strings (#313) - -- fixed unnecessary slowdown in comment placement calculation on lines without comments - -## 18.6b1 - -- hotfix: don't output human-facing information on stdout (#299) - -- hotfix: don't output cake emoji on non-zero return code (#300) - -## 18.6b0 - -- added `--include` and `--exclude` (#270) - -- added `--skip-string-normalization` (#118) - -- added `--verbose` (#283) - -- the header output in `--diff` now actually conforms to the unified diff spec - -- fixed long trivial assignments being wrapped in unnecessary parentheses (#273) - -- fixed unnecessary parentheses when a line contained multiline strings (#232) - -- fixed stdin handling not working correctly if an old version of Click was used (#276) - -- _Black_ now preserves line endings when formatting a file in place (#258) - -## 18.5b1 - -- added `--pyi` (#249) - -- added `--py36` (#249) - -- Python grammar pickle caches are stored with the formatting caches, making _Black_ - work in environments where site-packages is not user-writable (#192) - -- _Black_ now enforces a PEP 257 empty line after a class-level docstring (and/or - fields) and the first method - -- fixed invalid code produced when standalone comments were present in a trailer that - was omitted from line splitting on a large expression (#237) - -- fixed optional parentheses being removed within `# fmt: off` sections (#224) - -- fixed invalid code produced when stars in very long imports were incorrectly wrapped - in optional parentheses (#234) - -- fixed unstable formatting when inline comments were moved around in a trailer that was - omitted from line splitting on a large expression (#238) - -- fixed extra empty line between a class declaration and the first method if no class - docstring or fields are present (#219) - -- fixed extra empty line between a function signature and an inner function or inner - class (#196) - -## 18.5b0 - -- call chains are now formatted according to the - [fluent interfaces](https://en.wikipedia.org/wiki/Fluent_interface) style (#67) - -- data structure literals (tuples, lists, dictionaries, and sets) are now also always - exploded like imports when they don't fit in a single line (#152) - -- slices are now formatted according to PEP 8 (#178) - -- parentheses are now also managed automatically on the right-hand side of assignments - and return statements (#140) - -- math operators now use their respective priorities for delimiting multiline - expressions (#148) - -- optional parentheses are now omitted on expressions that start or end with a bracket - and only contain a single operator (#177) - -- empty parentheses in a class definition are now removed (#145, #180) - -- string prefixes are now standardized to lowercase and `u` is removed on Python 3.6+ - only code and Python 2.7+ code with the `unicode_literals` future import (#188, #198, - #199) - -- typing stub files (`.pyi`) are now formatted in a style that is consistent with PEP - 484 (#207, #210) - -- progress when reformatting many files is now reported incrementally - -- fixed trailers (content with brackets) being unnecessarily exploded into their own - lines after a dedented closing bracket (#119) - -- fixed an invalid trailing comma sometimes left in imports (#185) - -- fixed non-deterministic formatting when multiple pairs of removable parentheses were - used (#183) - -- fixed multiline strings being unnecessarily wrapped in optional parentheses in long - assignments (#215) - -- fixed not splitting long from-imports with only a single name - -- fixed Python 3.6+ file discovery by also looking at function calls with unpacking. - This fixed non-deterministic formatting if trailing commas where used both in function - signatures with stars and function calls with stars but the former would be - reformatted to a single line. - -- fixed crash on dealing with optional parentheses (#193) - -- fixed "is", "is not", "in", and "not in" not considered operators for splitting - purposes - -- fixed crash when dead symlinks where encountered - -## 18.4a4 - -- don't populate the cache on `--check` (#175) - -## 18.4a3 - -- added a "cache"; files already reformatted that haven't changed on disk won't be - reformatted again (#109) - -- `--check` and `--diff` are no longer mutually exclusive (#149) - -- generalized star expression handling, including double stars; this fixes - multiplication making expressions "unsafe" for trailing commas (#132) - -- _Black_ no longer enforces putting empty lines behind control flow statements (#90) - -- _Black_ now splits imports like "Mode 3 + trailing comma" of isort (#127) - -- fixed comment indentation when a standalone comment closes a block (#16, #32) - -- fixed standalone comments receiving extra empty lines if immediately preceding a - class, def, or decorator (#56, #154) - -- fixed `--diff` not showing entire path (#130) - -- fixed parsing of complex expressions after star and double stars in function calls - (#2) - -- fixed invalid splitting on comma in lambda arguments (#133) - -- fixed missing splits of ternary expressions (#141) - -## 18.4a2 - -- fixed parsing of unaligned standalone comments (#99, #112) - -- fixed placement of dictionary unpacking inside dictionary literals (#111) - -- Vim plugin now works on Windows, too - -- fixed unstable formatting when encountering unnecessarily escaped quotes in a string - (#120) - -## 18.4a1 - -- added `--quiet` (#78) - -- added automatic parentheses management (#4) - -- added [pre-commit](https://pre-commit.com) integration (#103, #104) - -- fixed reporting on `--check` with multiple files (#101, #102) - -- fixed removing backslash escapes from raw strings (#100, #105) - -## 18.4a0 - -- added `--diff` (#87) - -- add line breaks before all delimiters, except in cases like commas, to better comply - with PEP 8 (#73) - -- standardize string literals to use double quotes (almost) everywhere (#75) - -- fixed handling of standalone comments within nested bracketed expressions; _Black_ - will no longer produce super long lines or put all standalone comments at the end of - the expression (#22) - -- fixed 18.3a4 regression: don't crash and burn on empty lines with trailing whitespace - (#80) - -- fixed 18.3a4 regression: `# yapf: disable` usage as trailing comment would cause - _Black_ to not emit the rest of the file (#95) - -- when CTRL+C is pressed while formatting many files, _Black_ no longer freaks out with - a flurry of asyncio-related exceptions - -- only allow up to two empty lines on module level and only single empty lines within - functions (#74) - -## 18.3a4 - -- `# fmt: off` and `# fmt: on` are implemented (#5) - -- automatic detection of deprecated Python 2 forms of print statements and exec - statements in the formatted file (#49) - -- use proper spaces for complex expressions in default values of typed function - arguments (#60) - -- only return exit code 1 when --check is used (#50) - -- don't remove single trailing commas from square bracket indexing (#59) - -- don't omit whitespace if the previous factor leaf wasn't a math operator (#55) - -- omit extra space in kwarg unpacking if it's the first argument (#46) - -- omit extra space in - [Sphinx auto-attribute comments](http://www.sphinx-doc.org/en/stable/ext/autodoc.html#directive-autoattribute) - (#68) - -## 18.3a3 - -- don't remove single empty lines outside of bracketed expressions (#19) - -- added ability to pipe formatting from stdin to stdin (#25) - -- restored ability to format code with legacy usage of `async` as a name (#20, #42) - -- even better handling of numpy-style array indexing (#33, again) - -## 18.3a2 - -- changed positioning of binary operators to occur at beginning of lines instead of at - the end, following - [a recent change to PEP 8](https://github.com/python/peps/commit/c59c4376ad233a62ca4b3a6060c81368bd21e85b) - (#21) - -- ignore empty bracket pairs while splitting. This avoids very weirdly looking - formatting (#34, #35) - -- remove a trailing comma if there is a single argument to a call - -- if top level functions were separated by a comment, don't put four empty lines after - the upper function - -- fixed unstable formatting of newlines with imports - -- fixed unintentional folding of post scriptum standalone comments into last statement - if it was a simple statement (#18, #28) - -- fixed missing space in numpy-style array indexing (#33) - -- fixed spurious space after star-based unary expressions (#31) - -## 18.3a1 - -- added `--check` - -- only put trailing commas in function signatures and calls if it's safe to do so. If - the file is Python 3.6+ it's always safe, otherwise only safe if there are no `*args` - or `**kwargs` used in the signature or call. (#8) - -- fixed invalid spacing of dots in relative imports (#6, #13) - -- fixed invalid splitting after comma on unpacked variables in for-loops (#23) - -- fixed spurious space in parenthesized set expressions (#7) - -- fixed spurious space after opening parentheses and in default arguments (#14, #17) - -- fixed spurious space after unary operators when the operand was a complex expression - (#15) - -## 18.3a0 - -- first published version, Happy 🍰 Day 2018! - -- alpha quality - -- date-versioned (see: ) diff --git a/black-23.3.0.dist-info/RECORD b/black-23.3.0.dist-info/RECORD deleted file mode 100644 index 6c06c8b8de4d..000000000000 --- a/black-23.3.0.dist-info/RECORD +++ /dev/null @@ -1,118 +0,0 @@ -../Scripts/black.exe,sha256=d_8O-puwu8qnvCIrm4h4lPUM3WYUNaeehD6LU9w2i8M,108472 -../Scripts/blackd.exe,sha256=kFDluXS4SL_mZxRIziLSPYlQMvXBf0POc_fJiWkanMQ,108473 -2ec0e72aa72355e6eccf__mypyc.cp311-win_amd64.pyd,sha256=xS978QtiFu7n7aQ0GwR1lZ0rfZq1PYiN-8YeKkCTKVI,2563072 -__pycache__/_black_version.cpython-311.pyc,, -_black_version.py,sha256=Itz3hBkAtVtp5Nk-c8g6RSB1F2hCDbYLbyvwGFDH6PA,20 -black-23.3.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -black-23.3.0.dist-info/METADATA,sha256=7maOtd8jk0Lqm5DKa4aWAVbJeidh5PmNCgRozjT7hyI,61028 -black-23.3.0.dist-info/RECORD,, -black-23.3.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -black-23.3.0.dist-info/WHEEL,sha256=kytZiKdAk3alKYBjQlaTrburqpxrrCfu2jToxKGdCyo,97 -black-23.3.0.dist-info/entry_points.txt,sha256=qBIyywHwGRkJj7kieq86kqf77rz3qGC4Joj36lHnxwc,78 -black-23.3.0.dist-info/licenses/AUTHORS.md,sha256=asekhzda3Ji8C99_8iWFvo8eYNLHAt0o9-EPoCqTdNg,8238 -black-23.3.0.dist-info/licenses/LICENSE,sha256=XQJSBb4crFXeCOvZ-WHsfXTQ-Zj2XxeFbd0ien078zM,1101 -black/__init__.cp311-win_amd64.pyd,sha256=tv8lVbO-QrhaNKSY5LY11bTETWHG9NlOYu782i9Nbjo,10752 -black/__init__.py,sha256=dvXVka-37bgy3Uctk_ipA2aiKHf355K4CywV2Q5IJvI,48133 -black/__main__.py,sha256=6V0pV9Zeh8940mbQbVTCPdTX4Gjq1HGrFCA6E4HLGaM,50 -black/__pycache__/__init__.cpython-311.pyc,, -black/__pycache__/__main__.cpython-311.pyc,, -black/__pycache__/_width_table.cpython-311.pyc,, -black/__pycache__/brackets.cpython-311.pyc,, -black/__pycache__/cache.cpython-311.pyc,, -black/__pycache__/comments.cpython-311.pyc,, -black/__pycache__/concurrency.cpython-311.pyc,, -black/__pycache__/const.cpython-311.pyc,, -black/__pycache__/debug.cpython-311.pyc,, -black/__pycache__/files.cpython-311.pyc,, -black/__pycache__/handle_ipynb_magics.cpython-311.pyc,, -black/__pycache__/linegen.cpython-311.pyc,, -black/__pycache__/lines.cpython-311.pyc,, -black/__pycache__/mode.cpython-311.pyc,, -black/__pycache__/nodes.cpython-311.pyc,, -black/__pycache__/numerics.cpython-311.pyc,, -black/__pycache__/output.cpython-311.pyc,, -black/__pycache__/parsing.cpython-311.pyc,, -black/__pycache__/report.cpython-311.pyc,, -black/__pycache__/rusty.cpython-311.pyc,, -black/__pycache__/strings.cpython-311.pyc,, -black/__pycache__/trans.cpython-311.pyc,, -black/_width_table.cp311-win_amd64.pyd,sha256=YlGQfXy7TQS5FmNvPx2XnfJ8uY9GefxnoMEde8FXLME,10752 -black/_width_table.py,sha256=Acdq_ndR9fvXFuszs6CIps9IGMJQrLuvRVqVB6FlmKk,11355 -black/brackets.cp311-win_amd64.pyd,sha256=ksrlNARbLCIt5VjDlKPRFIgKZW1xokPbyGGEfMnWveA,10752 -black/brackets.py,sha256=5VALNz_M51ibn8KaFawOpvAUEzHUd7rD3PAJjNMpM3Q,12654 -black/cache.cp311-win_amd64.pyd,sha256=fP5b0d6ElWpY3VJe_Zf0vkxBoCfI8KwcdIAAfD7D-2Q,10752 -black/cache.py,sha256=AC5MnlaEl_EDdAcHdd1kT6gK9VgTCe527uvSaj0umTY,3043 -black/comments.cp311-win_amd64.pyd,sha256=dWxVN8F3v7FjksgqmCndrZyfWNf6qsWgMffb1fXIXTE,10752 -black/comments.py,sha256=PXP05CmYbjSjDw77nyrxAkRpvbqsFzjEyIg0wLn81QQ,13127 -black/concurrency.py,sha256=8mKP3yNedBlWHMTYr-f3uDAyCmqZZKo6r9jS1P6GQbs,6473 -black/const.cp311-win_amd64.pyd,sha256=vp_9K90xvnZAwMMoZXoHobHPVupM1YGjbGZKMXaox0Y,10752 -black/const.py,sha256=8aKF54-MAoIL6sBbydSCc7e5PXvB7uM6KQWN4PcFEa0,288 -black/debug.py,sha256=xaNChfqcWPMhYKJPOIQBU86Rl58YFRO5v8OQ3LLPGO4,1641 -black/files.py,sha256=21UsBiU_wcYc782mcg2XhSBVF1p8jsex-2zY8C7L5l4,13847 -black/handle_ipynb_magics.cp311-win_amd64.pyd,sha256=qKXjXUiBqDP5nZ9xYVuOU6BLr702oJu5_AI_SMD1uzM,10752 -black/handle_ipynb_magics.py,sha256=vqa6vUCg_urPv63hPZ5UfrgopajuQzjlDxvXT6lxk5w,13960 -black/linegen.cp311-win_amd64.pyd,sha256=6NVc9t6UN1P9nKfX941njA18MZi-hGzLwqZ8Z-77KFg,10752 -black/linegen.py,sha256=phujHgJqcTTVQs5_OVak9w-pBY9ODjGCRWN1Khm4uZQ,61810 -black/lines.cp311-win_amd64.pyd,sha256=HtBxoDN3ODoNKUFa_9JXToO19nnYTERk2BmHI3ul41Q,10752 -black/lines.py,sha256=CRvjA2cw5IQEfEqhaZn64LexlHUgXeJRpMnkYon5uoE,37533 -black/mode.cp311-win_amd64.pyd,sha256=ZrGnEMJPkKFovu39gzcfb7w5fAxvpS3d8jSO6arXFQw,10752 -black/mode.py,sha256=cOCXkccjqE6zXafjJzPhYN6B7UIBbQ2EanSKuwR5zmQ,7458 -black/nodes.cp311-win_amd64.pyd,sha256=H7oLDRGlmeOOynqycIsSnDbg2bP8yiJkioDdzvqSXQ4,10752 -black/nodes.py,sha256=PSYFpPi-vkv2LLPXqn_uDgFEc8qEaQBneZlunDROVS4,26598 -black/numerics.cp311-win_amd64.pyd,sha256=RPQwS-ZNax4VY33BNcOPPdKKjEDY-A09njRuaCN_mJo,10752 -black/numerics.py,sha256=fMj9bXRyOAqqBkZ3c6tMpoj--uPvRVh4_2F96tzK6OQ,1713 -black/output.py,sha256=aXH7mqzr-_m0ofbVI9GTjLKxe3BmtQYzlQoAYonmcec,3591 -black/parsing.cp311-win_amd64.pyd,sha256=N-pHQjoOB-g8NbK-jbcOnx184BPkcsxYhzp3kVGeTtQ,10752 -black/parsing.py,sha256=3ocppkmPNFv3AzLppYn4IVH18GUbkvvGUskl6GJHKLY,10487 -black/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -black/report.py,sha256=Qg8hfWlyKZ0Wyx4klC_Toq-028zaX0xGjJeO3z29yfs,3557 -black/rusty.cp311-win_amd64.pyd,sha256=W_TPf_azfyyL0gA1daZfw0DoETQwifjexWkOobagZXU,10752 -black/rusty.py,sha256=BPW2RsHJGEYqYpveeyahjALsiv8MIhSm6ECppKB95uo,583 -black/strings.cp311-win_amd64.pyd,sha256=dQ2_db2P9qZOSPcO8hgVt2qmFlJObQscNPAv5zBvUlU,10752 -black/strings.py,sha256=NPeTiacQRN8R8qkMf_ctn3FCCRN4KIyV2uNSvlAxFhw,11533 -black/trans.cp311-win_amd64.pyd,sha256=XoBHW1LbH6M4rzn5fXMAMy7_ajKaspjeF5qL_vrvQzI,10752 -black/trans.py,sha256=ThZ34L09RwEN6QLqXInnKeQmS3VNBgN2VWUqcLcqK8E,93238 -blackd/__init__.py,sha256=90REUG68i02IkIWq2Sj-bSMSmDqPH0gb6pGdmsFislw,8295 -blackd/__main__.py,sha256=-2NrSIZ5Es7pTFThp8w5JL9LwmmxtF1akhe7NU1OGvs,40 -blackd/__pycache__/__init__.cpython-311.pyc,, -blackd/__pycache__/__main__.cpython-311.pyc,, -blackd/__pycache__/middlewares.cpython-311.pyc,, -blackd/middlewares.py,sha256=77hGqdr2YypGhF_PhRiUgOEOUYykCB174Bb0higSI_U,1630 -blib2to3/Grammar.txt,sha256=4FsuLDx0QZJBQ4TAhCoBFsMxrQu8b6ochAPBQ1hYjeI,11530 -blib2to3/LICENSE,sha256=D2HM6JsydKABNqFe2-_N4Lf8VxxE1_5DVQtAFzw2_w8,13016 -blib2to3/PatternGrammar.txt,sha256=m6wfWk7y3-Qo35r77NWdJQ78XL1CqT_Pm0xr6eCOdpM,821 -blib2to3/README,sha256=xvm31R5NUiDUMDPNl9eKRkofrxkLriW2d2RbpYMZsQs,1094 -blib2to3/__init__.py,sha256=CSR2VOIKJL-JnGG41PcfbQZQEPCw43jfeK_EUisNsFQ,9 -blib2to3/__pycache__/__init__.cpython-311.pyc,, -blib2to3/__pycache__/pygram.cpython-311.pyc,, -blib2to3/__pycache__/pytree.cpython-311.pyc,, -blib2to3/pgen2/__init__.py,sha256=z8NemtNtAaIBocPMl0aMLgxaQMedsKOS_dOVAy8c3TI,147 -blib2to3/pgen2/__pycache__/__init__.cpython-311.pyc,, -blib2to3/pgen2/__pycache__/conv.cpython-311.pyc,, -blib2to3/pgen2/__pycache__/driver.cpython-311.pyc,, -blib2to3/pgen2/__pycache__/grammar.cpython-311.pyc,, -blib2to3/pgen2/__pycache__/literals.cpython-311.pyc,, -blib2to3/pgen2/__pycache__/parse.cpython-311.pyc,, -blib2to3/pgen2/__pycache__/pgen.cpython-311.pyc,, -blib2to3/pgen2/__pycache__/token.cpython-311.pyc,, -blib2to3/pgen2/__pycache__/tokenize.cpython-311.pyc,, -blib2to3/pgen2/conv.cp311-win_amd64.pyd,sha256=44-4RTFACFNtaaEUjpsiQssvc2o_BNA8A0uegNCQFLo,10752 -blib2to3/pgen2/conv.py,sha256=fzBJNYw56xutCa8alGybrrM16jMkpBfQBWCrn_zp1oY,9863 -blib2to3/pgen2/driver.cp311-win_amd64.pyd,sha256=Tlt4z4JjLuHxkNG13Ytg8jwd55jiqRurKqmT_RORb9g,10752 -blib2to3/pgen2/driver.py,sha256=OjBtiv7pU53JZMkOWtNnIf-ZVT0NLa9W2bIEAIgnQF8,10997 -blib2to3/pgen2/grammar.cp311-win_amd64.pyd,sha256=GX2Pn35ZbcHWx_0SKix-tFDDqEwYpBjKmM1inAdCRKs,10752 -blib2to3/pgen2/grammar.py,sha256=0uVcHmkAI7395XhMs7UQELQ0AoiURUJRqNcz3EwsxVA,7100 -blib2to3/pgen2/literals.cp311-win_amd64.pyd,sha256=gABd1olTs7ymiI-mSAb2tSOiWXIwXXKXOsd3N_q_64o,10752 -blib2to3/pgen2/literals.py,sha256=qSVA2gWKC6qK4IftyvBB5QQtx8cJpYaZyVqaIHbQktw,1696 -blib2to3/pgen2/parse.cp311-win_amd64.pyd,sha256=_PDh_ckW-ULRVc1tGLzQuyTVzph4tnOijb7Twh_w8zQ,10752 -blib2to3/pgen2/parse.py,sha256=Fhx-niATzqoRvUv_6SMujagq2IPiw6ZBPD3FZG-ZqQ4,15252 -blib2to3/pgen2/pgen.cp311-win_amd64.pyd,sha256=M9q8iBsImhK6qYk5d4hVGf8Ye8j_V3ppCPyaJhgc8AA,10752 -blib2to3/pgen2/pgen.py,sha256=5p-4dKKQOmX2VbfZKmCBKy_iKQaqwJE3i7XtDWWyrdU,15924 -blib2to3/pgen2/token.cp311-win_amd64.pyd,sha256=pjAN9_WtuUZeaxZVN7rfFV9pb4amAl0vCdn_JceJV8M,10752 -blib2to3/pgen2/token.py,sha256=eYrl31BASlDM3GLPWA_0EO3CbSzbvKeI9I0bDbo6NkY,2013 -blib2to3/pgen2/tokenize.cp311-win_amd64.pyd,sha256=FcbG8xwvEaVpm2oBx71I5pQU9Y9MuGj82bWT186XwQg,10752 -blib2to3/pgen2/tokenize.py,sha256=v2jYiiLpfGoMVIkHNLXIYnmAo2fyAshfhl3Y31JJM1s,23530 -blib2to3/pygram.cp311-win_amd64.pyd,sha256=A8mXlca9faFKSNuHVlhIbeBk4oj1upL1pk7-_Sia9pA,10752 -blib2to3/pygram.py,sha256=ZusInF45oWnvUFK5RmOspZPK9MbUOJk-UsH44ct1W8E,5950 -blib2to3/pytree.cp311-win_amd64.pyd,sha256=CyQOuXpeFp0dHAC1-oSg8Yr8zajDaEQYYGFng599Y2c,10752 -blib2to3/pytree.py,sha256=v8HZPe8jDnrg8_uKlfBzNjBCD_rBfQdqF1DJeNGgJmA,33601 diff --git a/black-23.3.0.dist-info/REQUESTED b/black-23.3.0.dist-info/REQUESTED deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/black-23.3.0.dist-info/WHEEL b/black-23.3.0.dist-info/WHEEL deleted file mode 100644 index a50955cc6d78..000000000000 --- a/black-23.3.0.dist-info/WHEEL +++ /dev/null @@ -1,4 +0,0 @@ -Wheel-Version: 1.0 -Generator: hatchling 1.13.0 -Root-Is-Purelib: false -Tag: cp311-cp311-win_amd64 diff --git a/black-23.3.0.dist-info/entry_points.txt b/black-23.3.0.dist-info/entry_points.txt deleted file mode 100644 index d0bf90792ea2..000000000000 --- a/black-23.3.0.dist-info/entry_points.txt +++ /dev/null @@ -1,3 +0,0 @@ -[console_scripts] -black = black:patched_main -blackd = blackd:patched_main [d] diff --git a/black-23.3.0.dist-info/licenses/AUTHORS.md b/black-23.3.0.dist-info/licenses/AUTHORS.md deleted file mode 100644 index ab3f30b8821e..000000000000 --- a/black-23.3.0.dist-info/licenses/AUTHORS.md +++ /dev/null @@ -1,195 +0,0 @@ -# Authors - -Glued together by [Łukasz Langa](mailto:lukasz@langa.pl). - -Maintained with: - -- [Carol Willing](mailto:carolcode@willingconsulting.com) -- [Carl Meyer](mailto:carl@oddbird.net) -- [Jelle Zijlstra](mailto:jelle.zijlstra@gmail.com) -- [Mika Naylor](mailto:mail@autophagy.io) -- [Zsolt Dollenstein](mailto:zsol.zsol@gmail.com) -- [Cooper Lees](mailto:me@cooperlees.com) -- [Richard Si](mailto:sichard26@gmail.com) -- [Felix Hildén](mailto:felix.hilden@gmail.com) -- [Batuhan Taskaya](mailto:batuhan@python.org) - -Multiple contributions by: - -- [Abdur-Rahmaan Janhangeer](mailto:arj.python@gmail.com) -- [Adam Johnson](mailto:me@adamj.eu) -- [Adam Williamson](mailto:adamw@happyassassin.net) -- [Alexander Huynh](mailto:ahrex-gh-psf-black@e.sc) -- [Alexandr Artemyev](mailto:mogost@gmail.com) -- [Alex Vandiver](mailto:github@chmrr.net) -- [Allan Simon](mailto:allan.simon@supinfo.com) -- Anders-Petter Ljungquist -- [Amethyst Reese](mailto:amy@n7.gg) -- [Andrew Thorp](mailto:andrew.thorp.dev@gmail.com) -- [Andrew Zhou](mailto:andrewfzhou@gmail.com) -- [Andrey](mailto:dyuuus@yandex.ru) -- [Andy Freeland](mailto:andy@andyfreeland.net) -- [Anthony Sottile](mailto:asottile@umich.edu) -- [Antonio Ossa Guerra](mailto:aaossa+black@uc.cl) -- [Arjaan Buijk](mailto:arjaan.buijk@gmail.com) -- [Arnav Borbornah](mailto:arnavborborah11@gmail.com) -- [Artem Malyshev](mailto:proofit404@gmail.com) -- [Asger Hautop Drewsen](mailto:asgerdrewsen@gmail.com) -- [Augie Fackler](mailto:raf@durin42.com) -- [Aviskar KC](mailto:aviskarkc10@gmail.com) -- Batuhan Taşkaya -- [Benjamin Wohlwend](mailto:bw@piquadrat.ch) -- [Benjamin Woodruff](mailto:github@benjam.info) -- [Bharat Raghunathan](mailto:bharatraghunthan9767@gmail.com) -- [Brandt Bucher](mailto:brandtbucher@gmail.com) -- [Brett Cannon](mailto:brett@python.org) -- [Bryan Bugyi](mailto:bryan.bugyi@rutgers.edu) -- [Bryan Forbes](mailto:bryan@reigndropsfall.net) -- [Calum Lind](mailto:calumlind@gmail.com) -- [Charles](mailto:peacech@gmail.com) -- Charles Reid -- [Christian Clauss](mailto:cclauss@bluewin.ch) -- [Christian Heimes](mailto:christian@python.org) -- [Chuck Wooters](mailto:chuck.wooters@microsoft.com) -- [Chris Rose](mailto:offline@offby1.net) -- Codey Oxley -- [Cong](mailto:congusbongus@gmail.com) -- [Cooper Ry Lees](mailto:me@cooperlees.com) -- [Dan Davison](mailto:dandavison7@gmail.com) -- [Daniel Hahler](mailto:github@thequod.de) -- [Daniel M. Capella](mailto:polycitizen@gmail.com) -- Daniele Esposti -- [David Hotham](mailto:david.hotham@metaswitch.com) -- [David Lukes](mailto:dafydd.lukes@gmail.com) -- [David Szotten](mailto:davidszotten@gmail.com) -- [Denis Laxalde](mailto:denis@laxalde.org) -- [Douglas Thor](mailto:dthor@transphormusa.com) -- dylanjblack -- [Eli Treuherz](mailto:eli@treuherz.com) -- [Emil Hessman](mailto:emil@hessman.se) -- [Felix Kohlgrüber](mailto:felix.kohlgrueber@gmail.com) -- [Florent Thiery](mailto:fthiery@gmail.com) -- Francisco -- [Giacomo Tagliabue](mailto:giacomo.tag@gmail.com) -- [Greg Gandenberger](mailto:ggandenberger@shoprunner.com) -- [Gregory P. Smith](mailto:greg@krypto.org) -- Gustavo Camargo -- hauntsaninja -- [Hadi Alqattan](mailto:alqattanhadizaki@gmail.com) -- [Hassan Abouelela](mailto:hassan@hassanamr.com) -- [Heaford](mailto:dan@heaford.com) -- [Hugo Barrera](mailto::hugo@barrera.io) -- Hugo van Kemenade -- [Hynek Schlawack](mailto:hs@ox.cx) -- [Ionite](mailto:dev@ionite.io) -- [Ivan Katanić](mailto:ivan.katanic@gmail.com) -- [Jakub Kadlubiec](mailto:jakub.kadlubiec@skyscanner.net) -- [Jakub Warczarek](mailto:jakub.warczarek@gmail.com) -- [Jan Hnátek](mailto:jan.hnatek@gmail.com) -- [Jason Fried](mailto:me@jasonfried.info) -- [Jason Friedland](mailto:jason@friedland.id.au) -- [jgirardet](mailto:ijkl@netc.fr) -- Jim Brännlund -- [Jimmy Jia](mailto:tesrin@gmail.com) -- [Joe Antonakakis](mailto:jma353@cornell.edu) -- [Jon Dufresne](mailto:jon.dufresne@gmail.com) -- [Jonas Obrist](mailto:ojiidotch@gmail.com) -- [Jonty Wareing](mailto:jonty@jonty.co.uk) -- [Jose Nazario](mailto:jose.monkey.org@gmail.com) -- [Joseph Larson](mailto:larson.joseph@gmail.com) -- [Josh Bode](mailto:joshbode@fastmail.com) -- [Josh Holland](mailto:anowlcalledjosh@gmail.com) -- [Joshua Cannon](mailto:joshdcannon@gmail.com) -- [José Padilla](mailto:jpadilla@webapplicate.com) -- [Juan Luis Cano Rodríguez](mailto:hello@juanlu.space) -- [kaiix](mailto:kvn.hou@gmail.com) -- [Katie McLaughlin](mailto:katie@glasnt.com) -- Katrin Leinweber -- [Keith Smiley](mailto:keithbsmiley@gmail.com) -- [Kenyon Ralph](mailto:kenyon@kenyonralph.com) -- [Kevin Kirsche](mailto:Kev.Kirsche+GitHub@gmail.com) -- [Kyle Hausmann](mailto:kyle.hausmann@gmail.com) -- [Kyle Sunden](mailto:sunden@wisc.edu) -- Lawrence Chan -- [Linus Groh](mailto:mail@linusgroh.de) -- [Loren Carvalho](mailto:comradeloren@gmail.com) -- [Luka Sterbic](mailto:luka.sterbic@gmail.com) -- [LukasDrude](mailto:mail@lukas-drude.de) -- Mahmoud Hossam -- Mariatta -- [Matt VanEseltine](mailto:vaneseltine@gmail.com) -- [Matthew Clapp](mailto:itsayellow+dev@gmail.com) -- [Matthew Walster](mailto:matthew@walster.org) -- Max Smolens -- [Michael Aquilina](mailto:michaelaquilina@gmail.com) -- [Michael Flaxman](mailto:michael.flaxman@gmail.com) -- [Michael J. Sullivan](mailto:sully@msully.net) -- [Michael McClimon](mailto:michael@mcclimon.org) -- [Miguel Gaiowski](mailto:miggaiowski@gmail.com) -- [Mike](mailto:roshi@fedoraproject.org) -- [mikehoyio](mailto:mikehoy@gmail.com) -- [Min ho Kim](mailto:minho42@gmail.com) -- [Miroslav Shubernetskiy](mailto:miroslav@miki725.com) -- MomIsBestFriend -- [Nathan Goldbaum](mailto:ngoldbau@illinois.edu) -- [Nathan Hunt](mailto:neighthan.hunt@gmail.com) -- [Neraste](mailto:neraste.herr10@gmail.com) -- [Nikolaus Waxweiler](mailto:madigens@gmail.com) -- [Ofek Lev](mailto:ofekmeister@gmail.com) -- [Osaetin Daniel](mailto:osaetindaniel@gmail.com) -- [otstrel](mailto:otstrel@gmail.com) -- [Pablo Galindo](mailto:Pablogsal@gmail.com) -- [Paul Ganssle](mailto:p.ganssle@gmail.com) -- [Paul Meinhardt](mailto:mnhrdt@gmail.com) -- [Peter Bengtsson](mailto:mail@peterbe.com) -- [Peter Grayson](mailto:pete@jpgrayson.net) -- [Peter Stensmyr](mailto:peter.stensmyr@gmail.com) -- pmacosta -- [Quentin Pradet](mailto:quentin@pradet.me) -- [Ralf Schmitt](mailto:ralf@systemexit.de) -- [Ramón Valles](mailto:mroutis@protonmail.com) -- [Richard Fearn](mailto:richardfearn@gmail.com) -- [Rishikesh Jha](mailto:rishijha424@gmail.com) -- [Rupert Bedford](mailto:rupert@rupertb.com) -- Russell Davis -- [Sagi Shadur](mailto:saroad2@gmail.com) -- [Rémi Verschelde](mailto:rverschelde@gmail.com) -- [Sami Salonen](mailto:sakki@iki.fi) -- [Samuel Cormier-Iijima](mailto:samuel@cormier-iijima.com) -- [Sanket Dasgupta](mailto:sanketdasgupta@gmail.com) -- Sergi -- [Scott Stevenson](mailto:scott@stevenson.io) -- Shantanu -- [shaoran](mailto:shaoran@sakuranohana.org) -- [Shinya Fujino](mailto:shf0811@gmail.com) -- springstan -- [Stavros Korokithakis](mailto:hi@stavros.io) -- [Stephen Rosen](mailto:sirosen@globus.org) -- [Steven M. Vascellaro](mailto:S.Vascellaro@gmail.com) -- [Sunil Kapil](mailto:snlkapil@gmail.com) -- [Sébastien Eustace](mailto:sebastien.eustace@gmail.com) -- [Tal Amuyal](mailto:TalAmuyal@gmail.com) -- [Terrance](mailto:git@terrance.allofti.me) -- [Thom Lu](mailto:thomas.c.lu@gmail.com) -- [Thomas Grainger](mailto:tagrain@gmail.com) -- [Tim Gates](mailto:tim.gates@iress.com) -- [Tim Swast](mailto:swast@google.com) -- [Timo](mailto:timo_tk@hotmail.com) -- Toby Fleming -- [Tom Christie](mailto:tom@tomchristie.com) -- [Tony Narlock](mailto:tony@git-pull.com) -- [Tsuyoshi Hombashi](mailto:tsuyoshi.hombashi@gmail.com) -- [Tushar Chandra](mailto:tusharchandra2018@u.northwestern.edu) -- [Tzu-ping Chung](mailto:uranusjr@gmail.com) -- [Utsav Shah](mailto:ukshah2@illinois.edu) -- utsav-dbx -- vezeli -- [Ville Skyttä](mailto:ville.skytta@iki.fi) -- [Vishwas B Sharma](mailto:sharma.vishwas88@gmail.com) -- [Vlad Emelianov](mailto:volshebnyi@gmail.com) -- [williamfzc](mailto:178894043@qq.com) -- [wouter bolsterlee](mailto:wouter@bolsterl.ee) -- Yazdan -- [Yngve Høiseth](mailto:yngve@hoiseth.net) -- [Yurii Karabas](mailto:1998uriyyo@gmail.com) -- [Zac Hatfield-Dodds](mailto:zac@zhd.dev) diff --git a/black-23.3.0.dist-info/licenses/LICENSE b/black-23.3.0.dist-info/licenses/LICENSE deleted file mode 100644 index 7a9b891f713e..000000000000 --- a/black-23.3.0.dist-info/licenses/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2018 Łukasz Langa - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/black.exe b/black.exe deleted file mode 100644 index f74055198485aefcf17adc1dd93b06af4effaf48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108472 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 UpoTGHoWJ-&53f5K{G?m{4~&{ni2wiq diff --git a/_black_version.py b/black/_black_version.py similarity index 100% rename from _black_version.py rename to black/_black_version.py From 2323737b27f4d0faabbaa20bd2502e0f5626ef2a Mon Sep 17 00:00:00 2001 From: "e.abouelkomsan" Date: Thu, 8 Jun 2023 01:35:25 +0200 Subject: [PATCH 12/14] Delete black file --- black/_black_version.py | 1 - 1 file changed, 1 deletion(-) delete mode 100644 black/_black_version.py diff --git a/black/_black_version.py b/black/_black_version.py deleted file mode 100644 index 86b89cb8833d..000000000000 --- a/black/_black_version.py +++ /dev/null @@ -1 +0,0 @@ -version = "23.3.0" From 1e07a78336b94e2044231848d922591075c857c0 Mon Sep 17 00:00:00 2001 From: "e.abouelkomsan" Date: Thu, 8 Jun 2023 06:20:38 +0200 Subject: [PATCH 13/14] Add the sliding window algorithm --- web_programming/sliding_window.py | 36 +++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/web_programming/sliding_window.py b/web_programming/sliding_window.py index e69de29bb2d1..b8ce51cedce2 100644 --- a/web_programming/sliding_window.py +++ b/web_programming/sliding_window.py @@ -0,0 +1,36 @@ +def sliding_window(elements: list[int], window_size: int) -> list[list[int]]: + """ + Generate sliding windows of a specified size over a list of elements. + + Args: + elements (list): The input list of elements. + window_size (int): The size of the sliding window. + + Returns: + list: A list of sliding windows. + + Example: + >>> lst = [1, 2, 3, 4, 5, 6, 7, 8] + >>> result = sliding_window(lst, 3) + >>> print(result) + [[1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6], [5, 6, 7], [6, 7, 8]] + + References: + https://stackoverflow.com/questions/8269916/what-is-sliding-window-algorithm-examples + """ + + if len(elements) <= window_size: + return [elements] + + windows = [] + for i in range(len(elements) - window_size + 1): + window = elements[i : i + window_size] + windows.append(window) + + return windows + + +if __name__ == "__main__": + import doctest + + doctest.testmod() From 26eae995ed939c3fc750df7016867bc7357ef06b Mon Sep 17 00:00:00 2001 From: "e.abouelkomsan" Date: Thu, 8 Jun 2023 06:27:02 +0200 Subject: [PATCH 14/14] Move the sliding window algorithms to other folder --- {web_programming => other}/sliding_window.py | 0 {web_programming => other}/sliding_window_generators.py | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename {web_programming => other}/sliding_window.py (100%) rename {web_programming => other}/sliding_window_generators.py (100%) diff --git a/web_programming/sliding_window.py b/other/sliding_window.py similarity index 100% rename from web_programming/sliding_window.py rename to other/sliding_window.py diff --git a/web_programming/sliding_window_generators.py b/other/sliding_window_generators.py similarity index 100% rename from web_programming/sliding_window_generators.py rename to other/sliding_window_generators.py