Bump black from 21.12b0 to 22.1.0
diff --git a/poetry.lock b/poetry.lock
index fcfe395fc..38171bea9 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -79,30 +79,26 @@ python-versions = "*"
 
 [[package]]
 name = "black"
-version = "21.12b0"
+version = "22.1.0"
 description = "The uncompromising code formatter."
 category = "dev"
 optional = false
 python-versions = ">=3.6.2"
 
 [package.dependencies]
-click = ">=7.1.2"
+click = ">=8.0.0"
 dataclasses = {version = ">=0.6", markers = "python_version < \"3.7\""}
 mypy-extensions = ">=0.4.3"
-pathspec = ">=0.9.0,<1"
+pathspec = ">=0.9.0"
 platformdirs = ">=2"
-tomli = ">=0.2.6,<2.0.0"
+tomli = ">=1.1.0"
 typed-ast = {version = ">=1.4.2", markers = "python_version < \"3.8\" and implementation_name == \"cpython\""}
-typing-extensions = [
-    {version = ">=3.10.0.0", markers = "python_version < \"3.10\""},
-    {version = "!=3.10.0.1", markers = "python_version >= \"3.10\""},
-]
+typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""}
 
 [package.extras]
 colorama = ["colorama (>=0.4.3)"]
 d = ["aiohttp (>=3.7.4)"]
 jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"]
-python2 = ["typed-ast (>=1.4.3)"]
 uvloop = ["uvloop (>=0.15.2)"]
 
 [[package]]
@@ -1053,7 +1049,7 @@ jupyter = ["ipywidgets"]
 [metadata]
 lock-version = "1.1"
 python-versions = "^3.6.2"
-content-hash = "74159f2d5dbb53418204e0fd27ef544256648663c41d0a2841c11c34589c52f6"
+content-hash = "656a91a327289529d8bb9135fef6c66486a192e7a7e8ed682d7c3e7bf5f7b239"
 
 [metadata.files]
 appnope = [
@@ -1104,8 +1100,29 @@ backcall = [
     {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"},
 ]
 black = [
-    {file = "black-21.12b0-py3-none-any.whl", hash = "sha256:a615e69ae185e08fdd73e4715e260e2479c861b5740057fde6e8b4e3b7dd589f"},
-    {file = "black-21.12b0.tar.gz", hash = "sha256:77b80f693a569e2e527958459634f18df9b0ba2625ba4e0c2d5da5be42e6f2b3"},
+    {file = "black-22.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1297c63b9e1b96a3d0da2d85d11cd9bf8664251fd69ddac068b98dc4f34f73b6"},
+    {file = "black-22.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2ff96450d3ad9ea499fc4c60e425a1439c2120cbbc1ab959ff20f7c76ec7e866"},
+    {file = "black-22.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e21e1f1efa65a50e3960edd068b6ae6d64ad6235bd8bfea116a03b21836af71"},
+    {file = "black-22.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2f69158a7d120fd641d1fa9a921d898e20d52e44a74a6fbbcc570a62a6bc8ab"},
+    {file = "black-22.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:228b5ae2c8e3d6227e4bde5920d2fc66cc3400fde7bcc74f480cb07ef0b570d5"},
+    {file = "black-22.1.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b1a5ed73ab4c482208d20434f700d514f66ffe2840f63a6252ecc43a9bc77e8a"},
+    {file = "black-22.1.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:35944b7100af4a985abfcaa860b06af15590deb1f392f06c8683b4381e8eeaf0"},
+    {file = "black-22.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:7835fee5238fc0a0baf6c9268fb816b5f5cd9b8793423a75e8cd663c48d073ba"},
+    {file = "black-22.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dae63f2dbf82882fa3b2a3c49c32bffe144970a573cd68d247af6560fc493ae1"},
+    {file = "black-22.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fa1db02410b1924b6749c245ab38d30621564e658297484952f3d8a39fce7e8"},
+    {file = "black-22.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c8226f50b8c34a14608b848dc23a46e5d08397d009446353dad45e04af0c8e28"},
+    {file = "black-22.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2d6f331c02f0f40aa51a22e479c8209d37fcd520c77721c034517d44eecf5912"},
+    {file = "black-22.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:742ce9af3086e5bd07e58c8feb09dbb2b047b7f566eb5f5bc63fd455814979f3"},
+    {file = "black-22.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fdb8754b453fb15fad3f72cd9cad3e16776f0964d67cf30ebcbf10327a3777a3"},
+    {file = "black-22.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5660feab44c2e3cb24b2419b998846cbb01c23c7fe645fee45087efa3da2d61"},
+    {file = "black-22.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:6f2f01381f91c1efb1451998bd65a129b3ed6f64f79663a55fe0e9b74a5f81fd"},
+    {file = "black-22.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:efbadd9b52c060a8fc3b9658744091cb33c31f830b3f074422ed27bad2b18e8f"},
+    {file = "black-22.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8871fcb4b447206904932b54b567923e5be802b9b19b744fdff092bd2f3118d0"},
+    {file = "black-22.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ccad888050f5393f0d6029deea2a33e5ae371fd182a697313bdbd835d3edaf9c"},
+    {file = "black-22.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07e5c049442d7ca1a2fc273c79d1aecbbf1bc858f62e8184abe1ad175c4f7cc2"},
+    {file = "black-22.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:373922fc66676133ddc3e754e4509196a8c392fec3f5ca4486673e685a421321"},
+    {file = "black-22.1.0-py3-none-any.whl", hash = "sha256:3524739d76b6b3ed1132422bf9d82123cd1705086723bc3e235ca39fd21c667d"},
+    {file = "black-22.1.0.tar.gz", hash = "sha256:a7c0192d35635f6fc1174be575cb7915e92e5dd629ee79fdaf0dcfa41a80afb5"},
 ]
 bleach = [
     {file = "bleach-4.1.0-py2.py3-none-any.whl", hash = "sha256:4d2651ab93271d1129ac9cbc679f524565cc8a1b791909c4a51eac4446a15994"},
diff --git a/pyproject.toml b/pyproject.toml
index d110cf38c..4f7d8dd26 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -40,7 +40,7 @@ jupyter = ["ipywidgets"]
 
 [tool.poetry.dev-dependencies]
 pytest = "^7.0.0"
-black = "^21.11b1"
+black = "^22.1"
 mypy = "^0.930"
 pytest-cov = "^3.0.0"
 attrs = "^21.4.0"

Bumps [black](https://github.com/psf/black) from 21.12b0 to 22.1.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/psf/black/releases">black's releases</a>.</em></p>
<blockquote>
<h2>22.1.0</h2>
<p>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.</p>
<h3>Highlights</h3>
<ul>
<li>Remove Python 2 support (<a href="https://github-redirect.dependabot.com/psf/black/issues/2740">#2740</a>)</li>
<li>Introduce the <code>--preview</code> flag (<a href="https://github-redirect.dependabot.com/psf/black/issues/2752">#2752</a>)</li>
</ul>
<h3>Style</h3>
<ul>
<li>Deprecate <code>--experimental-string-processing</code> and move the functionality under <code>--preview</code> (<a href="https://github-redirect.dependabot.com/psf/black/issues/2789">#2789</a>)</li>
<li>For stubs, one blank line between class attributes and methods is now kept if there's at least one pre-existing blank line (<a href="https://github-redirect.dependabot.com/psf/black/issues/2736">#2736</a>)</li>
<li>Black now normalizes string prefix order (<a href="https://github-redirect.dependabot.com/psf/black/issues/2297">#2297</a>)</li>
<li>Remove spaces around power operators if both operands are simple (<a href="https://github-redirect.dependabot.com/psf/black/issues/2726">#2726</a>)</li>
<li>Work around bug that causes unstable formatting in some cases in the presence of the magic trailing comma (<a href="https://github-redirect.dependabot.com/psf/black/issues/2807">#2807</a>)</li>
<li>Use parentheses for attribute access on decimal float and int literals (<a href="https://github-redirect.dependabot.com/psf/black/issues/2799">#2799</a>)</li>
<li>Don't add whitespace for attribute access on hexadecimal, binary, octal, and complex literals (<a href="https://github-redirect.dependabot.com/psf/black/issues/2799">#2799</a>)</li>
<li>Treat blank lines in stubs the same inside top-level if statements (<a href="https://github-redirect.dependabot.com/psf/black/issues/2820">#2820</a>)</li>
<li>Fix unstable formatting with semicolons and arithmetic expressions (<a href="https://github-redirect.dependabot.com/psf/black/issues/2817">#2817</a>)</li>
<li>Fix unstable formatting around magic trailing comma (<a href="https://github-redirect.dependabot.com/psf/black/issues/2572">#2572</a>)</li>
</ul>
<h3>Parser</h3>
<ul>
<li>Fix mapping cases that contain as-expressions, like <code>case {&quot;key&quot;: 1 | 2 as password}</code> (<a href="https://github-redirect.dependabot.com/psf/black/issues/2686">#2686</a>)</li>
<li>Fix cases that contain multiple top-level as-expressions, like <code>case 1 as a, 2 as b</code> (<a href="https://github-redirect.dependabot.com/psf/black/issues/2716">#2716</a>)</li>
<li>Fix call patterns that contain as-expressions with keyword arguments, like <code>case Foo(bar=baz as quux)</code> (<a href="https://github-redirect.dependabot.com/psf/black/issues/2749">#2749</a>)</li>
<li>Tuple unpacking on <code>return</code> and <code>yield</code> constructs now implies 3.8+ (<a href="https://github-redirect.dependabot.com/psf/black/issues/2700">#2700</a>)</li>
<li>Unparenthesized tuples on annotated assignments (e.g <code>values: Tuple[int, ...] = 1, 2, 3</code>) now implies 3.8+ (<a href="https://github-redirect.dependabot.com/psf/black/issues/2708">#2708</a>)</li>
<li>Fix handling of standalone <code>match()</code> or <code>case()</code> when there is a trailing newline or a comment inside of the parentheses. (<a href="https://github-redirect.dependabot.com/psf/black/issues/2760">#2760</a>)</li>
<li><code>from __future__ import annotations</code> statement now implies Python 3.7+ (<a href="https://github-redirect.dependabot.com/psf/black/issues/2690">#2690</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Speed-up the new backtracking parser about 4X in general (enabled when <code>--target-version</code> is set to 3.10 and higher). (<a href="https://github-redirect.dependabot.com/psf/black/issues/2728">#2728</a>)</li>
<li>Black is now compiled with mypyc for an overall 2x speed-up. 64-bit Windows, MacOS, and Linux (not including musl) are supported. (<a href="https://github-redirect.dependabot.com/psf/black/issues/1009">#1009</a>, <a href="https://github-redirect.dependabot.com/psf/black/issues/2431">#2431</a>)</li>
</ul>
<h3>Configuration</h3>
<ul>
<li>Do not accept bare carriage return line endings in pyproject.toml (<a href="https://github-redirect.dependabot.com/psf/black/issues/2408">#2408</a>)</li>
<li>Add configuration option (<code>python-cell-magics</code>) to format cells with custom magics in Jupyter Notebooks (<a href="https://github-redirect.dependabot.com/psf/black/issues/2744">#2744</a>)</li>
<li>Allow setting custom cache directory on all platforms with environment variable <code>BLACK_CACHE_DIR</code> (<a href="https://github-redirect.dependabot.com/psf/black/issues/2739">#2739</a>).</li>
<li>Enable Python 3.10+ by default, without any extra need to specify -<code>-target-version=py310</code>. (<a href="https://github-redirect.dependabot.com/psf/black/issues/2758">#2758</a>)</li>
<li>Make passing <code>SRC</code> or <code>--code</code> mandatory and mutually exclusive (<a href="https://github-redirect.dependabot.com/psf/black/issues/2804">#2804</a>)</li>
</ul>
<h3>Output</h3>
<ul>
<li>Improve error message for invalid regular expression (<a href="https://github-redirect.dependabot.com/psf/black/issues/2678">#2678</a>)</li>
<li>Improve error message when parsing fails during AST safety check by embedding the underlying SyntaxError (<a href="https://github-redirect.dependabot.com/psf/black/issues/2693">#2693</a>)</li>
<li>No longer color diff headers white as it's unreadable in light themed terminals (<a href="https://github-redirect.dependabot.com/psf/black/issues/2691">#2691</a>)</li>
<li>Text coloring added in the final statistics (<a href="https://github-redirect.dependabot.com/psf/black/issues/2712">#2712</a>)</li>
<li>Verbose mode also now describes how a project root was discovered and which paths will be formatted. (<a href="https://github-redirect.dependabot.com/psf/black/issues/2526">#2526</a>)</li>
</ul>
<h3>Packaging</h3>
<ul>
<li>All upper version bounds on dependencies have been removed (<a href="https://github-redirect.dependabot.com/psf/black/issues/2718">#2718</a>)</li>
<li><code>typing-extensions</code> is no longer a required dependency in Python 3.10+ (<a href="https://github-redirect.dependabot.com/psf/black/issues/2772">#2772</a>)</li>
<li>Set <code>click</code> lower bound to <code>8.0.0</code> as <em>Black</em> crashes on <code>7.1.2</code> (<a href="https://github-redirect.dependabot.com/psf/black/issues/2791">#2791</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/psf/black/blob/main/CHANGES.md">black's changelog</a>.</em></p>
<blockquote>
<h2>22.1.0</h2>
<p>At long last, <em>Black</em> is no longer a beta product! This is the first non-beta release
and the first release covered by our new stability policy.</p>
<h3>Highlights</h3>
<ul>
<li><strong>Remove Python 2 support</strong> (<a href="https://github-redirect.dependabot.com/psf/black/issues/2740">#2740</a>)</li>
<li>Introduce the <code>--preview</code> flag (<a href="https://github-redirect.dependabot.com/psf/black/issues/2752">#2752</a>)</li>
</ul>
<h3>Style</h3>
<ul>
<li>Deprecate <code>--experimental-string-processing</code> and move the functionality under
<code>--preview</code> (<a href="https://github-redirect.dependabot.com/psf/black/issues/2789">#2789</a>)</li>
<li>For stubs, one blank line between class attributes and methods is now kept if there's
at least one pre-existing blank line (<a href="https://github-redirect.dependabot.com/psf/black/issues/2736">#2736</a>)</li>
<li>Black now normalizes string prefix order (<a href="https://github-redirect.dependabot.com/psf/black/issues/2297">#2297</a>)</li>
<li>Remove spaces around power operators if both operands are simple (<a href="https://github-redirect.dependabot.com/psf/black/issues/2726">#2726</a>)</li>
<li>Work around bug that causes unstable formatting in some cases in the presence of the
magic trailing comma (<a href="https://github-redirect.dependabot.com/psf/black/issues/2807">#2807</a>)</li>
<li>Use parentheses for attribute access on decimal float and int literals (<a href="https://github-redirect.dependabot.com/psf/black/issues/2799">#2799</a>)</li>
<li>Don't add whitespace for attribute access on hexadecimal, binary, octal, and complex
literals (<a href="https://github-redirect.dependabot.com/psf/black/issues/2799">#2799</a>)</li>
<li>Treat blank lines in stubs the same inside top-level <code>if</code> statements (<a href="https://github-redirect.dependabot.com/psf/black/issues/2820">#2820</a>)</li>
<li>Fix unstable formatting with semicolons and arithmetic expressions (<a href="https://github-redirect.dependabot.com/psf/black/issues/2817">#2817</a>)</li>
<li>Fix unstable formatting around magic trailing comma (<a href="https://github-redirect.dependabot.com/psf/black/issues/2572">#2572</a>)</li>
</ul>
<h3>Parser</h3>
<ul>
<li>Fix mapping cases that contain as-expressions, like <code>case {&quot;key&quot;: 1 | 2 as password}</code>
(<a href="https://github-redirect.dependabot.com/psf/black/issues/2686">#2686</a>)</li>
<li>Fix cases that contain multiple top-level as-expressions, like <code>case 1 as a, 2 as b</code>
(<a href="https://github-redirect.dependabot.com/psf/black/issues/2716">#2716</a>)</li>
<li>Fix call patterns that contain as-expressions with keyword arguments, like
<code>case Foo(bar=baz as quux)</code> (<a href="https://github-redirect.dependabot.com/psf/black/issues/2749">#2749</a>)</li>
<li>Tuple unpacking on <code>return</code> and <code>yield</code> constructs now implies 3.8+ (<a href="https://github-redirect.dependabot.com/psf/black/issues/2700">#2700</a>)</li>
<li>Unparenthesized tuples on annotated assignments (e.g
<code>values: Tuple[int, ...] = 1, 2, 3</code>) now implies 3.8+ (<a href="https://github-redirect.dependabot.com/psf/black/issues/2708">#2708</a>)</li>
<li>Fix handling of standalone <code>match()</code> or <code>case()</code> when there is a trailing newline or a
comment inside of the parentheses. (<a href="https://github-redirect.dependabot.com/psf/black/issues/2760">#2760</a>)</li>
<li><code>from __future__ import annotations</code> statement now implies Python 3.7+ (<a href="https://github-redirect.dependabot.com/psf/black/issues/2690">#2690</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Speed-up the new backtracking parser about 4X in general (enabled when
<code>--target-version</code> is set to 3.10 and higher). (<a href="https://github-redirect.dependabot.com/psf/black/issues/2728">#2728</a>)</li>
<li><em>Black</em> is now compiled with <a href="https://github.com/mypyc/mypyc">mypyc</a> for an overall 2x
speed-up. 64-bit Windows, MacOS, and Linux (not including musl) are supported. (<a href="https://github-redirect.dependabot.com/psf/black/issues/1009">#1009</a>,
<a href="https://github-redirect.dependabot.com/psf/black/issues/2431">#2431</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/psf/black/commits/22.1.0">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=black&package-manager=pip&previous-version=21.12b0&new-version=22.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>