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

Drop Python 2.7 #936

Merged
merged 12 commits into from
Mar 21, 2022
Merged

Drop Python 2.7 #936

merged 12 commits into from
Mar 21, 2022

Conversation

hynek
Copy link
Member

@hynek hynek commented Mar 19, 2022

We have paid our dues.

The tooling situation around Python 2 has deteriorated to such a degree that
upholding compatibility is not tenable anymore for a volunteer-run project.

Here's the stats for March so far:

| category | percent |  downloads |
|:---------|--------:|-----------:|
| 3.7      |  33.67% | 18,582,627 |
| null     |  19.82% | 10,936,104 |
| 3.8      |  18.75% | 10,344,976 |
| 3.9      |  11.20% |  6,180,529 |
| 3.6      |  10.88% |  6,006,746 |
| 3.10     |   2.95% |  1,625,923 |
| 2.7      |   1.87% |  1,030,024 |
| 3.5      |   0.84% |    463,005 |
| 3.4      |   0.02% |     10,044 |
| 3.11     |   0.01% |      7,899 |
| 3.3      |   0.00% |         25 |
| 2.6      |   0.00% |          8 |
| 3.2      |   0.00% |          2 |
| Total    |         | 55,187,912 |

Date range: 2022-03-01 - 2022-03-18

The main impetus being that Python 2.7 is as of macOS 12.3 not usable with virtualenv anymore. I will probably drop 3.5 next since nobody uses it and I can't install it anymore.

There's a lot of code that could probably be simplified (e.g. when just aliases are imported from _compat), but we can keep that for another PR. Same as ridding docs of (object)s.

@hynek
Copy link
Member Author

hynek commented Mar 19, 2022

I'm gonna need some guidance re __qualname__.

We've got partial coverage in

attrs/src/attr/_make.py

Lines 864 to 866 in b093bc7

qualname = getattr(self._cls, "__qualname__", None)
if qualname is not None:
cd["__qualname__"] = qualname

(looks like qualname's never None)

and

attrs/src/attr/_make.py

Lines 1945 to 1950 in 2047cfa

qualname = getattr(real_cls, "__qualname__", None)
if qualname is not None:
# This case only happens on Python 3.5 and 3.6.
class_name = qualname.rsplit(">.", 1)[-1]
else:
class_name = real_cls.__name__

Here:

Line 1950 is never executed so qualname appears to be never None, contradicting the comment??? Or is the comment so old that it just meant "new Pythons"?


Qualified names have been added in 3.3, but maybe there's some weird way to create classes without a qualname?

@ssbarnea
Copy link

Bit late but drop it! Better late than never.

@sscherfke
Copy link
Contributor

🎉 🎉 🎉

@hynek
Copy link
Member Author

hynek commented Mar 20, 2022

So I've decided:

  1. the second instance is a non-issue, since the new f-string-based repr never cared about it'
  2. the first one is a risk we'll take. i mean i've got a tradition of quickly releasing a hot fix release for edge cases to uphold

The tooling situation around Python 2 has deteriorate to such a degree that
upholding compatibility is not tenable anymore for a volunteer-run project.

Signed-off-by: Hynek Schlawack <hs@ox.cx>
Also disable pyupgrade on that file.

Signed-off-by: Hynek Schlawack <hs@ox.cx>
@hynek
Copy link
Member Author

hynek commented Mar 20, 2022

Less emoji, more reviewing gentlepeople! ;)

@ssbarnea
Copy link

I rarely see people that do not have review rights (write) doing format review approvals on github. Even when I explicitly asked them to do it, it got very poor results. Maybe you will be more successful. Another issue is the size of the PR, usually I would have only modify metadata to require newer python and remove the CI jobs for py27, before gradually remove the code in follow-ups, so the reviews are more humanely reviewable.

@sscherfke
Copy link
Contributor

I skimmed the changes and haven't noticed any problems. Also ran the tests on my machine and checked that it does not break Typed Settings.

setup.py Show resolved Hide resolved
src/attr/_make.py Outdated Show resolved Hide resolved
Copy link
Member

@wbolster wbolster left a comment

Choose a reason for hiding this comment

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

left a few comments, mostly nits

didn't spot anything (too) weird 🙃

Copy link
Member

@Tinche Tinche left a comment

Choose a reason for hiding this comment

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

Cattrs tests pass ;)

changelog.d/936.breaking.rst Outdated Show resolved Hide resolved
hynek and others added 2 commits March 21, 2022 08:21
Co-authored-by: Tin Tvrtković <tinchester@gmail.com>
@hynek hynek merged commit 980c8b0 into main Mar 21, 2022
@hynek hynek deleted the drop-py27 branch March 21, 2022 07:47
wbolster added a commit to wbolster/attrs that referenced this pull request Mar 21, 2022
- Reword and simplify a few docstrings.
- Add back a test for 2-arg super() in property() definitions that
  was (accidentally?) dropped in python-attrs#936.
wbolster added a commit to wbolster/attrs that referenced this pull request Mar 21, 2022
- Reword and simplify a few docstrings.
- Add back a test for 2-arg super() in property() definitions that
  was (accidentally?) dropped in python-attrs#936.
hynek added a commit that referenced this pull request Mar 21, 2022
- Reword and simplify a few docstrings.
- Add back a test for 2-arg super() in property() definitions that
  was (accidentally?) dropped in #936.

Co-authored-by: Hynek Schlawack <hs@ox.cx>
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>
github-actions bot added a commit to MaRDI4NFDI/open-interfaces that referenced this pull request Sep 23, 2022
Bumps [attrs](https://github.com/python-attrs/attrs) from 21.4.0 to
22.1.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>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 />
</blockquote>
</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.4.0...22.1.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.4.0&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>
mtremer referenced this pull request in ipfire/ipfire-2.x Nov 11, 2022
- Updated from version 21.4.0 to 22.1.0
- Update of rootfile
- Changelog
   22.1.0 (2022-07-28)
	Backwards-incompatible Changes
		- Python 2.7 is not supported anymore.
		  Dealing with Python 2.7 tooling has become too difficult for a volunteer-run project.
		  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.
		  `#936 <https://github.com/python-attrs/attrs/issues/936>`_
		- The deprecated ``cmp`` attribute of ``attrs.Attribute`` has been removed.
		  This does not affect the *cmp* argument to ``attr.s`` that can be used as a shortcut to set *eq* and *order* at the same time.
		  `#939 <https://github.com/python-attrs/attrs/issues/939>`_
	Changes
		- Instantiation of frozen slotted classes is now faster.
		  `#898 <https://github.com/python-attrs/attrs/issues/898>`_
		- If an ``eq`` key is defined, it is also used before hashing the attribute.
		  `#909 <https://github.com/python-attrs/attrs/issues/909>`_
		- Added ``attrs.validators.min_len()``.
		  `#916 <https://github.com/python-attrs/attrs/issues/916>`_
		- ``attrs.validators.deep_iterable()``'s *member_validator* argument now also accepts a list of validators and wraps them in an ``attrs.validators.and_()``.
		  `#925 <https://github.com/python-attrs/attrs/issues/925>`_
		- Added missing type stub re-imports for ``attrs.converters`` and ``attrs.filters``.
		  `#931 <https://github.com/python-attrs/attrs/issues/931>`_
		- Added missing stub for ``attr(s).cmp_using()``.
		  `#949 <https://github.com/python-attrs/attrs/issues/949>`_
		- ``attrs.validators._in()``'s ``ValueError`` is not missing the attribute, expected options, and the value it got anymore.
		  `#951 <https://github.com/python-attrs/attrs/issues/951>`_
		- Python 3.11 is now officially supported.
		  `#969 <https://github.com/python-attrs/attrs/issues/969>`_

Tested-by: Adolf Belka <adolf.belka@ipfire.org>
Signed-off-by: Adolf Belka <adolf.belka@ipfire.org>
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.

5 participants