Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Do not require cloudpickle for PyPy #892

Merged
merged 5 commits into from
Dec 29, 2021

Conversation

mgorny
Copy link
Contributor

@mgorny mgorny commented Dec 28, 2021

The cloudpickle package relies on CPython implementation details,
and does not even import on PyPy:

ImportError while importing test module '/tmp/attrs/tests/test_3rd_party.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/usr/lib/pypy3.8/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
tests/test_3rd_party.py:7: in <module>
    import cloudpickle
.tox/pypy3/lib/pypy3.8/site-packages/cloudpickle/__init__.py:4: in <module>
    from cloudpickle.cloudpickle import *  # noqa
.tox/pypy3/lib/pypy3.8/site-packages/cloudpickle/cloudpickle.py:57: in <module>
    from .compat import pickle
.tox/pypy3/lib/pypy3.8/site-packages/cloudpickle/compat.py:13: in <module>
    from _pickle import Pickler  # noqa: F401
E   ModuleNotFoundError: No module named '_pickle'

Disable the dependency for PyPy and make the test handle missing
cloudpickle gracefully.

Summary

Pull Request Check List

  • Added tests for changed code.
    Our CI fails if coverage is not 100%.
  • New features have been added to our Hypothesis testing strategy.
  • Changes or additions to public APIs are reflected in our type stubs (files ending in .pyi).
    • ...and used in the stub test file tests/typing_example.py.
    • If they've been added to attr/__init__.pyi, they've also been re-imported in attrs/__init__.pyi.
  • Updated documentation for changed code.
    • New functions/classes have to be added to docs/api.rst by hand.
    • Changes to the signature of @attr.s() have to be added by hand too.
    • Changed/added classes/methods/functions have appropriate versionadded, versionchanged, or deprecated directives.
      Find the appropriate next version in our __init__.py file.
  • Documentation in .rst files is written using semantic newlines.
  • Changes (and possible deprecations) have news fragments in changelog.d.

@mgorny
Copy link
Contributor Author

mgorny commented Dec 28, 2021

I think this is not worthy of a news fragment but I can add one if you disagree.

tests/test_3rd_party.py Outdated Show resolved Hide resolved
@hynek
Copy link
Member

hynek commented Dec 28, 2021

I'm somewhat confused why our PyPy tests passed then? 😳

@mgorny
Copy link
Contributor Author

mgorny commented Dec 28, 2021

I'm somewhat confused why our PyPy tests passed then? flushed

Hmm, maybe it's a change in PyPy3.8's stdlib then.

Copy link
Contributor

@thetorpedodog thetorpedodog left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

as a non-maintainer but the person who implemented the cloudpickle fix and test, I have one minor suggestion. seems like a good change overall!

setup.py Outdated Show resolved Hide resolved
The cloudpickle package relies on CPython implementation details,
and does not even import on PyPy:

```
ImportError while importing test module '/tmp/attrs/tests/test_3rd_party.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/usr/lib/pypy3.8/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
tests/test_3rd_party.py:7: in <module>
    import cloudpickle
.tox/pypy3/lib/pypy3.8/site-packages/cloudpickle/__init__.py:4: in <module>
    from cloudpickle.cloudpickle import *  # noqa
.tox/pypy3/lib/pypy3.8/site-packages/cloudpickle/cloudpickle.py:57: in <module>
    from .compat import pickle
.tox/pypy3/lib/pypy3.8/site-packages/cloudpickle/compat.py:13: in <module>
    from _pickle import Pickler  # noqa: F401
E   ModuleNotFoundError: No module named '_pickle'
```

Disable the dependency for PyPy and make the test handle missing
cloudpickle gracefully.
@mgorny
Copy link
Contributor Author

mgorny commented Dec 29, 2021

I have also enabled testing on pypy-3.8 and confirmed that it fails without the change: https://github.com/mgorny/attrs/runs/4656570160

@hynek
Copy link
Member

hynek commented Dec 29, 2021

So newsfragment is not strictly necessary, but if you'd like, you can add a Fixed the test suite on PyPy 3.8. or something like that…the correct version is probably different?

@hynek hynek enabled auto-merge (squash) December 29, 2021 08:35
auto-merge was automatically disabled December 29, 2021 08:36

Head branch was pushed to by a user without write access

@mgorny
Copy link
Contributor Author

mgorny commented Dec 29, 2021

Added.

Copy link
Member

@hynek hynek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, let's 🚢 this!

@hynek hynek merged commit 03dd713 into python-attrs:main Dec 29, 2021
bors bot added a commit to ChrisRBe/PP-P2P-Parser that referenced this pull request Jan 6, 2022
469: build(deps): bump attrs from 21.3.0 to 21.4.0 r=ChrisRBe a=dependabot[bot]

Bumps [attrs](https://github.com/python-attrs/attrs) from 21.3.0 to 21.4.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/python-attrs/attrs/releases">attrs's releases</a>.</em></p>
<blockquote>
<h2>21.4.0</h2>
<p>This is a quick bug fix release for a regression that causes <code>coverage report</code> fail under certain circumstances.</p>
<h1>Full Changelog</h1>
<h2>Changes</h2>
<ul>
<li>Fixed the test suite on PyPy3.8 where <code>cloudpickle</code> does not work. <a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/892">#892</a></li>
<li>Fixed <code>coverage report</code> for projects that use <code>attrs</code> and don't set a <code>--source</code>. <a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/895">#895</a>, <a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/896">#896</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/python-attrs/attrs/blob/main/CHANGELOG.rst">attrs's changelog</a>.</em></p>
<blockquote>
<h2>21.4.0 (2021-12-29)</h2>
<p>Changes
^^^^^^^</p>
<ul>
<li>Fixed the test suite on PyPy3.8 where <code>cloudpickle</code> does not work.
<code>[#892](python-attrs/attrs#892) &lt;https://github.com/python-attrs/attrs/issues/892&gt;</code>_</li>
<li>Fixed <code>coverage report</code> for projects that use <code>attrs</code> and don't set a <code>--source</code>.
<code>[#895](python-attrs/attrs#895) &lt;https://github.com/python-attrs/attrs/issues/895&gt;</code><em>,
<code>[#896](python-attrs/attrs#896) &lt;https://github.com/python-attrs/attrs/issues/896&gt;</code></em></li>
</ul>
<hr />
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/python-attrs/attrs/commit/2de90143100e713d8ae6b5d1adb5e1e879af01fb"><code>2de9014</code></a> Prepare 21.4.0</li>
<li><a href="https://github.com/python-attrs/attrs/commit/02ba249b81a8d01ef6e7b04a7412556234aaa3bb"><code>02ba249</code></a> Remove dead anchors</li>
<li><a href="https://github.com/python-attrs/attrs/commit/1ff3f1ee919178946bb48442f1e183ea99dae373"><code>1ff3f1e</code></a> Minor changelog polish</li>
<li><a href="https://github.com/python-attrs/attrs/commit/0575d51ffddc0de465e7229571d11f9c6f6b8575"><code>0575d51</code></a> Make virtual repr file names unique (<a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/896">#896</a>)</li>
<li><a href="https://github.com/python-attrs/attrs/commit/03dd7136cf1ccc58c9612531ba9711892830c1fb"><code>03dd713</code></a> Do not require cloudpickle for PyPy (<a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/892">#892</a>)</li>
<li><a href="https://github.com/python-attrs/attrs/commit/ce50f40b52567564000af685959dc6df97c5f384"><code>ce50f40</code></a> Use correct words</li>
<li><a href="https://github.com/python-attrs/attrs/commit/9424a930f966ade789b1ea4b8043efe916c50769"><code>9424a93</code></a> Tell coverage about import attrs</li>
<li><a href="https://github.com/python-attrs/attrs/commit/c86fbc864862983111184eb9c3092afe2f2d477e"><code>c86fbc8</code></a> Use better word</li>
<li><a href="https://github.com/python-attrs/attrs/commit/7695908aa7b4a96fbfefb7432145f843ae9c0c98"><code>7695908</code></a> docs: fix very minor typo (<a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/894">#894</a>)</li>
<li><a href="https://github.com/python-attrs/attrs/commit/ada66bef24700d159acff4b72b7cb34a263ccccf"><code>ada66be</code></a> docs: remove typo in README.rst (<a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/893">#893</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/python-attrs/attrs/compare/21.3.0...21.4.0">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=attrs&package-manager=pip&previous-version=21.3.0&new-version=21.4.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>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
qujingpengf added a commit to qujingpengf/ChrisRBe that referenced this pull request Jan 22, 2022
469: build(deps): bump attrs from 21.3.0 to 21.4.0 r=ChrisRBe a=dependabot[bot]

Bumps [attrs](https://github.com/python-attrs/attrs) from 21.3.0 to 21.4.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/python-attrs/attrs/releases">attrs's releases</a>.</em></p>
<blockquote>
<h2>21.4.0</h2>
<p>This is a quick bug fix release for a regression that causes <code>coverage report</code> fail under certain circumstances.</p>
<h1>Full Changelog</h1>
<h2>Changes</h2>
<ul>
<li>Fixed the test suite on PyPy3.8 where <code>cloudpickle</code> does not work. <a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/892">#892</a></li>
<li>Fixed <code>coverage report</code> for projects that use <code>attrs</code> and don't set a <code>--source</code>. <a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/895">#895</a>, <a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/896">#896</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/python-attrs/attrs/blob/main/CHANGELOG.rst">attrs's changelog</a>.</em></p>
<blockquote>
<h2>21.4.0 (2021-12-29)</h2>
<p>Changes
^^^^^^^</p>
<ul>
<li>Fixed the test suite on PyPy3.8 where <code>cloudpickle</code> does not work.
<code>[#892](python-attrs/attrs#892) &lt;https://github.com/python-attrs/attrs/issues/892&gt;</code>_</li>
<li>Fixed <code>coverage report</code> for projects that use <code>attrs</code> and don't set a <code>--source</code>.
<code>[#895](python-attrs/attrs#895) &lt;https://github.com/python-attrs/attrs/issues/895&gt;</code><em>,
<code>[#896](python-attrs/attrs#896) &lt;https://github.com/python-attrs/attrs/issues/896&gt;</code></em></li>
</ul>
<hr />
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/python-attrs/attrs/commit/2de90143100e713d8ae6b5d1adb5e1e879af01fb"><code>2de9014</code></a> Prepare 21.4.0</li>
<li><a href="https://github.com/python-attrs/attrs/commit/02ba249b81a8d01ef6e7b04a7412556234aaa3bb"><code>02ba249</code></a> Remove dead anchors</li>
<li><a href="https://github.com/python-attrs/attrs/commit/1ff3f1ee919178946bb48442f1e183ea99dae373"><code>1ff3f1e</code></a> Minor changelog polish</li>
<li><a href="https://github.com/python-attrs/attrs/commit/0575d51ffddc0de465e7229571d11f9c6f6b8575"><code>0575d51</code></a> Make virtual repr file names unique (<a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/896">#896</a>)</li>
<li><a href="https://github.com/python-attrs/attrs/commit/03dd7136cf1ccc58c9612531ba9711892830c1fb"><code>03dd713</code></a> Do not require cloudpickle for PyPy (<a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/892">#892</a>)</li>
<li><a href="https://github.com/python-attrs/attrs/commit/ce50f40b52567564000af685959dc6df97c5f384"><code>ce50f40</code></a> Use correct words</li>
<li><a href="https://github.com/python-attrs/attrs/commit/9424a930f966ade789b1ea4b8043efe916c50769"><code>9424a93</code></a> Tell coverage about import attrs</li>
<li><a href="https://github.com/python-attrs/attrs/commit/c86fbc864862983111184eb9c3092afe2f2d477e"><code>c86fbc8</code></a> Use better word</li>
<li><a href="https://github.com/python-attrs/attrs/commit/7695908aa7b4a96fbfefb7432145f843ae9c0c98"><code>7695908</code></a> docs: fix very minor typo (<a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/894">#894</a>)</li>
<li><a href="https://github.com/python-attrs/attrs/commit/ada66bef24700d159acff4b72b7cb34a263ccccf"><code>ada66be</code></a> docs: remove typo in README.rst (<a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/893">#893</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/python-attrs/attrs/compare/21.3.0...21.4.0">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=attrs&package-manager=pip&previous-version=21.3.0&new-version=21.4.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>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
mergify bot pushed a commit to aws/jsii that referenced this pull request Aug 1, 2022
…/packages/@jsii/python-runtime (#3692)

Updates the requirements on [attrs](https://github.com/python-attrs/attrs) to permit the latest version.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/python-attrs/attrs/releases">attrs's releases</a>.</em></p>
<blockquote>
<h2>22.1.0</h2>
<h1>Highlights</h1>
<p>The main features of this release are:</p>
<ul>
<li>The departure of Python 2.7 (enjoy your retirement!),</li>
<li>and the arrival of Python 3.11.</li>
</ul>
<p>We had loftier goals feature-wise, but didn't want to block others embracing Python 3.11.</p>
<p>❤️ <strong>Huge</strong> thanks to my <a href="https://github.com/sponsors/hynek">GitHub sponsors</a>, <a href="https://tidelift.com/subscription/pkg/pypi-attrs">Tidelift subscribers</a>, and <a href="https://ko-fi.com/the_hynek">Ko-fi buyers</a>! ❤️</p>
<p>None of my projects would exist in their current form without you!</p>
<h1>Full Changelog</h1>
<h2>Backwards-incompatible Changes</h2>
<ul>
<li>
<p>Python 2.7 is not supported anymore.</p>
<p>Dealing with Python 2.7 tooling has become too difficult for a volunteer-run project.</p>
<p>We have supported Python 2 more than 2 years after it was officially discontinued and feel that we have paid our dues. All version up to 21.4.0 from December 2021 remain fully functional, of course. <a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/936">#936</a></p>
</li>
<li>
<p>The deprecated <code>cmp</code> attribute of <code>attrs.Attribute</code> has been removed. This does not affect the <em>cmp</em> argument to <code>attr.s</code> that can be used as a shortcut to set <em>eq</em> and <em>order</em> at the same time. <a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/939">#939</a></p>
</li>
</ul>
<h2>Changes</h2>
<ul>
<li>Instantiation of frozen slotted classes is now faster. <a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/898">#898</a></li>
<li>If an <code>eq</code> key is defined, it is also used before hashing the attribute. <a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/909">#909</a></li>
<li>Added <code>attrs.validators.min_len()</code>. <a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/916">#916</a></li>
<li><code>attrs.validators.deep_iterable()</code>'s <em>member_validator</em> argument now also accepts a list of validators and wraps them in an <code>attrs.validators.and_()</code>. <a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/925">#925</a></li>
<li>Added missing type stub re-imports for <code>attrs.converters</code> and <code>attrs.filters</code>. <a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/931">#931</a></li>
<li>Added missing stub for <code>attr(s).cmp_using()</code>. <a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/949">#949</a></li>
<li><code>attrs.validators._in()</code>'s <code>ValueError</code> is not missing the attribute, expected options, and the value it got anymore. <a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/951">#951</a></li>
<li>Python 3.11 is now officially supported. <a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/969">#969</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/python-attrs/attrs/blob/main/CHANGELOG.rst">attrs's changelog</a>.</em></p>
<blockquote>
<h2>22.1.0 (2022-07-28)</h2>
<p>Backwards-incompatible Changes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^</p>
<ul>
<li>
<p>Python 2.7 is not supported anymore.</p>
<p>Dealing with Python 2.7 tooling has become too difficult for a volunteer-run project.</p>
<p>We have supported Python 2 more than 2 years after it was officially discontinued and feel that we have paid our dues.
All version up to 21.4.0 from December 2021 remain fully functional, of course.
<code>[#936](python-attrs/attrs#936) &lt;https://github.com/python-attrs/attrs/issues/936&gt;</code>_</p>
</li>
<li>
<p>The deprecated <code>cmp</code> attribute of <code>attrs.Attribute</code> has been removed.
This does not affect the <em>cmp</em> argument to <code>attr.s</code> that can be used as a shortcut to set <em>eq</em> and <em>order</em> at the same time.
<code>[#939](python-attrs/attrs#939) &lt;https://github.com/python-attrs/attrs/issues/939&gt;</code>_</p>
</li>
</ul>
<p>Changes
^^^^^^^</p>
<ul>
<li>Instantiation of frozen slotted classes is now faster.
<code>[#898](python-attrs/attrs#898) &lt;https://github.com/python-attrs/attrs/issues/898&gt;</code>_</li>
<li>If an <code>eq</code> key is defined, it is also used before hashing the attribute.
<code>[#909](python-attrs/attrs#909) &lt;https://github.com/python-attrs/attrs/issues/909&gt;</code>_</li>
<li>Added <code>attrs.validators.min_len()</code>.
<code>[#916](python-attrs/attrs#916) &lt;https://github.com/python-attrs/attrs/issues/916&gt;</code>_</li>
<li><code>attrs.validators.deep_iterable()</code>'s <em>member_validator</em> argument now also accepts a list of validators and wraps them in an <code>attrs.validators.and_()</code>.
<code>[#925](python-attrs/attrs#925) &lt;https://github.com/python-attrs/attrs/issues/925&gt;</code>_</li>
<li>Added missing type stub re-imports for <code>attrs.converters</code> and <code>attrs.filters</code>.
<code>[#931](python-attrs/attrs#931) &lt;https://github.com/python-attrs/attrs/issues/931&gt;</code>_</li>
<li>Added missing stub for <code>attr(s).cmp_using()</code>.
<code>[#949](python-attrs/attrs#949) &lt;https://github.com/python-attrs/attrs/issues/949&gt;</code>_</li>
<li><code>attrs.validators._in()</code>'s <code>ValueError</code> is not missing the attribute, expected options, and the value it got anymore.
<code>[#951](python-attrs/attrs#951) &lt;https://github.com/python-attrs/attrs/issues/951&gt;</code>_</li>
<li>Python 3.11 is now officially supported.
<code>[#969](python-attrs/attrs#969) &lt;https://github.com/python-attrs/attrs/issues/969&gt;</code>_</li>
</ul>
<hr />
<h2>21.4.0 (2021-12-29)</h2>
<p>Changes
^^^^^^^</p>
<ul>
<li>Fixed the test suite on PyPy3.8 where <code>cloudpickle</code> does not work.
<code>[#892](python-attrs/attrs#892) &lt;https://github.com/python-attrs/attrs/issues/892&gt;</code>_</li>
</ul>

</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/python-attrs/attrs/commit/b3dfebe2e10b44437c4f97d788fb5220d790efd0"><code>b3dfebe</code></a> Prepare 22.1.0</li>
<li><a href="https://github.com/python-attrs/attrs/commit/c89abcd6e6a826b00898f93e851c96b78c80891f"><code>c89abcd</code></a> It totally is correct</li>
<li><a href="https://github.com/python-attrs/attrs/commit/9f118b7dd5328ee5abd7f3880971ab9554047c3a"><code>9f118b7</code></a> Tune first steps</li>
<li><a href="https://github.com/python-attrs/attrs/commit/a3d7f20e54ba29d5ec73563c167d877351228cf2"><code>a3d7f20</code></a> Polish contributing guide</li>
<li><a href="https://github.com/python-attrs/attrs/commit/899497f165b3c8291b66c9c3a01b64881b69cf39"><code>899497f</code></a> Clarify (c) ownership</li>
<li><a href="https://github.com/python-attrs/attrs/commit/696fd786901a6b82b828dd71e3fd64bfae1014ca"><code>696fd78</code></a> Hyphenate compound adjectives</li>
<li><a href="https://github.com/python-attrs/attrs/commit/65c06831c1eee4d9895511c7db5caffba9d93c0e"><code>65c0683</code></a> Use NG APIs in glossary</li>
<li><a href="https://github.com/python-attrs/attrs/commit/5d84d9a5686e8210b1616447ac05021b6b211157"><code>5d84d9a</code></a> Move mypy config to pyproject.toml</li>
<li><a href="https://github.com/python-attrs/attrs/commit/1590917bf7c49e35bb429d117650f660aa45e0e4"><code>1590917</code></a> Update readme.rst (<a href="https://github-redirect.dependabot.com/python-attrs/attrs/issues/986">#986</a>)</li>
<li><a href="https://github.com/python-attrs/attrs/commit/a67c84f51e4e3df875961d287583abaef673eb48"><code>a67c84f</code></a> Add more prominent callout about slots to API docs</li>
<li>Additional commits viewable in <a href="https://github.com/python-attrs/attrs/compare/21.2.0...22.1.0">compare view</a></li>
</ul>
</details>
<br />


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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants