Update to 22.1.0

This commit is contained in:
Lumir Balhar 2022-07-29 11:29:35 +02:00
parent 6535f7fd3a
commit 201f9667b5
4 changed files with 8 additions and 185 deletions

1
.gitignore vendored
View File

@ -11,3 +11,4 @@
/attrs-21.1.0.tar.gz
/attrs-21.2.0.tar.gz
/attrs-21.4.0.tar.gz
/attrs-22.1.0.tar.gz

179
969.patch
View File

@ -1,179 +0,0 @@
From bfd605d08896e5ecdf9791b0f748decfbb143d70 Mon Sep 17 00:00:00 2001
From: Lumir Balhar <lbalhar@redhat.com>
Date: Fri, 24 Jun 2022 09:20:13 +0200
Subject: [PATCH] Add support for Python 3.11
---
setup.py | 1 +
src/attr/_compat.py | 26 +++++++++++---------------
tests/test_annotations.py | 13 +++++++++----
tests/test_make.py | 8 ++++++--
tests/test_slots.py | 18 ++++++++++++------
5 files changed, 39 insertions(+), 27 deletions(-)
diff --git a/setup.py b/setup.py
index 00e7b01..32ba64b 100644
--- a/setup.py
+++ b/setup.py
@@ -41,6 +41,7 @@ CLASSIFIERS = [
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
+ "Programming Language :: Python :: 3.11",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Topic :: Software Development :: Libraries :: Python Modules",
diff --git a/src/attr/_compat.py b/src/attr/_compat.py
index dc0cb02..b5c6ed6 100644
--- a/src/attr/_compat.py
+++ b/src/attr/_compat.py
@@ -181,12 +181,8 @@ def make_set_closure_cell():
# Convert this code object to a code object that sets the
# function's first _freevar_ (not cellvar) to the argument.
if sys.version_info >= (3, 8):
- # CPython 3.8+ has an incompatible CodeType signature
- # (added a posonlyargcount argument) but also added
- # CodeType.replace() to do this without counting parameters.
- set_first_freevar_code = co.replace(
- co_cellvars=co.co_freevars, co_freevars=co.co_cellvars
- )
+ def set_closure_cell(cell, value):
+ cell.cell_contents = value
else:
args = [co.co_argcount]
if not PY2:
@@ -211,15 +207,15 @@ def make_set_closure_cell():
)
set_first_freevar_code = types.CodeType(*args)
- def set_closure_cell(cell, value):
- # Create a function using the set_first_freevar_code,
- # whose first closure cell is `cell`. Calling it will
- # change the value of that cell.
- setter = types.FunctionType(
- set_first_freevar_code, {}, "setter", (), (cell,)
- )
- # And call it to set the cell.
- setter(value)
+ def set_closure_cell(cell, value):
+ # Create a function using the set_first_freevar_code,
+ # whose first closure cell is `cell`. Calling it will
+ # change the value of that cell.
+ setter = types.FunctionType(
+ set_first_freevar_code, {}, "setter", (), (cell,)
+ )
+ # And call it to set the cell.
+ setter(value)
# Make sure it works on this interpreter:
def make_func_with_cell():
diff --git a/tests/test_annotations.py b/tests/test_annotations.py
index a201ebf..014bea5 100644
--- a/tests/test_annotations.py
+++ b/tests/test_annotations.py
@@ -94,6 +94,10 @@ class TestAnnotations:
assert 1 == len(attr.fields(C))
assert_init_annotations(C, x=typing.List[int])
+ @pytest.mark.skipif(
+ sys.version_info[:2] < (3, 11),
+ reason="Incompatible behavior on older Pythons",
+ )
@pytest.mark.parametrize("slots", [True, False])
def test_auto_attribs(self, slots):
"""
@@ -149,7 +153,7 @@ class TestAnnotations:
x=typing.List[int],
y=int,
z=int,
- foo=typing.Optional[typing.Any],
+ foo=typing.Any,
)
@pytest.mark.parametrize("slots", [True, False])
@@ -384,8 +388,9 @@ class TestAnnotations:
assert attr.converters.optional(noop).__annotations__ == {}
- @pytest.mark.xfail(
- sys.version_info[:2] == (3, 6), reason="Does not work on 3.6."
+ @pytest.mark.skipif(
+ sys.version_info[:2] < (3, 11),
+ reason="Incompatible behavior on older Pythons",
)
@pytest.mark.parametrize("slots", [True, False])
def test_annotations_strings(self, slots):
@@ -417,7 +422,7 @@ class TestAnnotations:
x=typing.List[int],
y=int,
z=int,
- foo=typing.Optional[typing.Any],
+ foo=typing.Any,
)
@pytest.mark.parametrize("slots", [True, False])
diff --git a/tests/test_make.py b/tests/test_make.py
index 729d3a7..71a50a5 100644
--- a/tests/test_make.py
+++ b/tests/test_make.py
@@ -2312,7 +2312,9 @@ class TestAutoDetect:
def __getstate__(self):
return ("hi",)
- assert None is getattr(C(), "__setstate__", None)
+ assert getattr(object, "__setstate__", None) is getattr(
+ C, "__setstate__", None
+ )
@attr.s(slots=slots, auto_detect=True)
class C(object):
@@ -2328,7 +2330,9 @@ class TestAutoDetect:
i.__setstate__(())
assert True is i.called
- assert None is getattr(C(), "__getstate__", None)
+ assert getattr(object, "__getstate__", None) is getattr(
+ C, "__getstate__", None
+ )
@pytest.mark.skipif(PY310, reason="Pre-3.10 only.")
def test_match_args_pre_310(self):
diff --git a/tests/test_slots.py b/tests/test_slots.py
index baf9a40..3da80cc 100644
--- a/tests/test_slots.py
+++ b/tests/test_slots.py
@@ -665,10 +665,12 @@ class TestPickle(object):
As long as getstate_setstate is None, nothing is done to dict
classes.
"""
- i = C1(1, 2)
-
- assert None is getattr(i, "__getstate__", None)
- assert None is getattr(i, "__setstate__", None)
+ assert getattr(object, "__getstate__", None) is getattr(
+ C1, "__getstate__", None
+ )
+ assert getattr(object, "__setstate__", None) is getattr(
+ C1, "__setstate__", None
+ )
def test_no_getstate_setstate_if_option_false(self):
"""
@@ -681,8 +683,12 @@ class TestPickle(object):
i = C(42)
- assert None is getattr(i, "__getstate__", None)
- assert None is getattr(i, "__setstate__", None)
+ assert getattr(object, "__getstate__", None) is getattr(
+ C, "__getstate__", None
+ )
+ assert getattr(object, "__setstate__", None) is getattr(
+ C, "__setstate__", None
+ )
@pytest.mark.parametrize("cls", [C2(1), C2Slots(1)])
def test_getstate_set_state_force_true(self, cls):
--
2.36.1

View File

@ -9,16 +9,14 @@
%endif
Name: python-attrs
Version: 21.4.0
Release: 6%{?dist}
Version: 22.1.0
Release: 1%{?dist}
Summary: Python attributes without boilerplate
License: MIT
URL: http://www.attrs.org/
BuildArch: noarch
Source0: https://github.com/hynek/%{modname}/archive/%{version}/%{modname}-%{version}.tar.gz
# Python 3.11 compatibility
Patch969: https://github.com/python-attrs/attrs/pull/969.patch
BuildRequires: python%{python3_pkgversion}-devel
BuildRequires: python%{python3_pkgversion}-setuptools
@ -45,7 +43,6 @@ object protocols.
%prep
%setup -q -n %{modname}-%{version}
%patch969 -p1
%build
%py3_build
@ -64,6 +61,10 @@ PYTHONPATH=%{buildroot}/%{python3_sitelib} py.test-3 -v
%{python3_sitelib}/*
%changelog
* Fri Jul 29 2022 Lumír Balhar <lbalhar@redhat.com> - 22.1.0-1
- Update to 22.1.0
Resolves: rhbz#2112006
* Fri Jul 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 21.4.0-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild

View File

@ -1 +1 @@
SHA512 (attrs-21.4.0.tar.gz) = aa45891f9beb00a2e03ae9326e0daa5789eb32164a1ee3a3fea618e2db30778d66bcce7f664134a99e1e45f7ee5040aa13ebc0d3d405acf57c580de6b35cfd76
SHA512 (attrs-22.1.0.tar.gz) = 3e9190fdc0d5f18a9ab1f0a4ab4c74ef0edb05c8973ea67ead29438ab699ceb61b0864ff3ddacd77c2d107c74c72fa9d17754d0d763d6f64f6d2d6529d8683ca