Your message dated Mon, 23 Sep 2024 21:40:32 +0000
with message-id <[email protected]>
and subject line Bug#1074724: fixed in magicgui 0.9.1-1
has caused the Debian Bug report #1074724,
regarding magicgui: FTBFS: dh_auto_test: error: pybuild --test --test-pytest -i 
python{version} -p "3.11 3.12" returned exit code 13
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
1074724: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1074724
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Source: magicgui
Version: 0.7.2-4
Severity: serious
Justification: FTBFS
Tags: trixie sid ftbfs
User: [email protected]
Usertags: ftbfs-20240702 ftbfs-trixie

Hi,

During a rebuild of all packages in sid, your package failed to build
on amd64.


Relevant part (hopefully):
>  debian/rules binary
> dh binary --with=python3 --with=numpy3 --buildsystem=pybuild
>    dh_update_autotools_config -O--buildsystem=pybuild
>    dh_autoreconf -O--buildsystem=pybuild
>    dh_auto_configure -O--buildsystem=pybuild
>    dh_auto_build -O--buildsystem=pybuild
> I: pybuild plugin_pyproject:129: Building wheel for python3.11 with "build" 
> module
> I: pybuild base:311: python3.11 -m build --skip-dependency-check 
> --no-isolation --wheel --outdir 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_magicgui  
> * Building wheel...
> Successfully built magicgui-0.7.2-py3-none-any.whl
> I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.11 with 
> "installer" module
> I: pybuild plugin_pyproject:129: Building wheel for python3.12 with "build" 
> module
> I: pybuild base:311: python3.12 -m build --skip-dependency-check 
> --no-isolation --wheel --outdir 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magicgui  
> * Building wheel...
> Successfully built magicgui-0.7.2-py3-none-any.whl
> I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.12 with 
> "installer" module
>    dh_auto_test -O--buildsystem=pybuild
> I: pybuild base:311: cd 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_magicgui/build; python3.11 -m pytest 
> tests
> ============================= test session starts 
> ==============================
> platform linux -- Python 3.11.9, pytest-8.2.2, pluggy-1.5.0
> PyQt5 5.15.10 -- Qt runtime 5.15.13 -- Qt compiled 5.15.13
> rootdir: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_magicgui/build
> configfile: pyproject.toml
> plugins: xvfb-3.0.0, qt-4.3.1
> collected 313 items / 3 skipped
> 
> tests/test_application.py .                                              [  
> 0%]
> tests/test_backends.py s.........                                        [  
> 3%]
> tests/test_container.py ..............                                   [  
> 7%]
> tests/test_docs.py ss.                                                   [  
> 8%]
> tests/test_factory.py ..........                                         [ 
> 12%]
> tests/test_gui_class.py F.FFF                                            [ 
> 13%]
> tests/test_magicgui.py ...................x............................. [ 
> 29%]
>                                                                          [ 
> 29%]
> tests/test_persistence.py ...                                            [ 
> 30%]
> tests/test_signature.py ....                                             [ 
> 31%]
> tests/test_table.py ............................sss.........             [ 
> 44%]
> tests/test_types.py ...............                                      [ 
> 49%]
> tests/test_ui_field.py s.ss....ss.                                       [ 
> 52%]
> tests/test_widgets.py ......s.s..ss..s.ss..ss.sss.s..s.........s......s. [ 
> 68%]
> s.......s..s............................................................ [ 
> 91%]
> ..........................                                               
> [100%]
> 
> =================================== FAILURES 
> ===================================
> ________________________________ test_guiclass 
> _________________________________
> 
>     def test_guiclass():
>         """Test that the guiclass decorator works as expected."""
>         mock = Mock()
>     
>         @guiclass
>         class Foo:
>             a: int = 1
>             b: str = "bar"
>     
>             @button
>             def func(self):
>                 mock(asdict(self))
>     
>             # example recommended for type checking
>             if TYPE_CHECKING:
>                 gui: ClassVar[Container]
>                 events: ClassVar[psygnal.SignalGroup]
>     
>         foo = Foo()
>     
>         assert foo.a == 1
>         assert foo.b == "bar"
>     
> >       assert isinstance(foo.gui, Container)
> 
> tests/test_gui_class.py:43: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> magicgui/schema/_guiclass.py:233: in __get__
>     bind_gui_to_instance(wdg, instance)
> magicgui/schema/_guiclass.py:274: in bind_gui_to_instance
>     widget.changed.connect_setattr(
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = <SignalInstance 'changed' on SpinBox(value=1, annotation=<class 
> 'int'>, name='a')>
> obj = test_guiclass.<locals>.Foo(a=1, b='bar'), attr = 'a'
> maxargs = <object object at 0x7f0102bf5c70>
> 
>     def connect_setattr(
>         self,
>         obj: object,
>         attr: str,
>         maxargs: int | None | object = _NULL,
>         *,
>         on_ref_error: RefErrorChoice = "warn",
>         priority: int = 0,
>     ) -> WeakCallback[None]:
>         """Bind an object attribute to the emitted value of this signal.
>     
>         Equivalent to calling `self.connect(functools.partial(setattr, obj, 
> attr))`,
>         but with additional weakref safety (i.e. a strong reference to `obj` 
> will not
>         be retained). The return object can be used to
>         [`disconnect()`][psygnal.SignalInstance.disconnect], (or you can use
>         [`disconnect_setattr()`][psygnal.SignalInstance.disconnect_setattr]).
>     
>         Parameters
>         ----------
>         obj : object
>             An object.
>         attr : str
>             The name of an attribute on `obj` that should be set to the value 
> of this
>             signal when emitted.
>         maxargs : Optional[int]
>             max number of positional args to accept
>         on_ref_error: {'raise', 'warn', 'ignore'}, optional
>             What to do if a weak reference cannot be created.  If 'raise', a
>             ReferenceError will be raised.  If 'warn' (default), a warning 
> will be
>             issued and a strong-reference will be used. If 'ignore' a 
> strong-reference
>             will be used (silently).
>         priority : int
>             The priority of the callback. This is used to determine the order 
> in which
>             callbacks are called when multiple are connected to the same 
> signal.
>             Higher priority callbacks are called first. Negative values are 
> allowed.
>             The default is 0.
>     
>         Returns
>         -------
>         Tuple
>             (weakref.ref, name, callable).  Reference to the object, name of 
> the
>             attribute, and setattr closure.  Can be used to disconnect the 
> slot.
>     
>         Raises
>         ------
>         ValueError
>             If this is not a single-value signal
>         AttributeError
>             If `obj` has no attribute `attr`.
>     
>         Examples
>         --------
>         >>> class T:
>         ...     sig = Signal(int)
>         >>> class SomeObj:
>         ...     x = 1
>         >>> t = T()
>         >>> my_obj = SomeObj()
>         >>> t.sig.connect_setattr(my_obj, "x")
>         >>> t.sig.emit(5)
>         >>> assert my_obj.x == 5
>         """
>         if maxargs is _NULL:
> >           warnings.warn(
>                 "The default value of maxargs will change from `None` to `1` 
> in "
>                 "version 0.11. To silence this warning, provide an explicit 
> value for "
>                 "maxargs (`None` for current behavior, `1` for future 
> behavior).",
>                 FutureWarning,
>                 stacklevel=2,
>             )
> E           FutureWarning: The default value of maxargs will change from 
> `None` to `1` in version 0.11. To silence this warning, provide an explicit 
> value for maxargs (`None` for current behavior, `1` for future behavior).
> 
> /usr/lib/python3/dist-packages/psygnal/_signal.py:858: FutureWarning
> __________________________ test_on_existing_dataclass 
> __________________________
> 
>     def test_on_existing_dataclass():
>         """Test that the guiclass decorator works on pre-existing 
> dataclasses."""
>     
>         @guiclass
>         @dataclass
>         class Foo:
>             a: int = 1
>             b: str = "bar"
>     
>         foo = Foo()
>         assert foo.a == 1
>         assert foo.b == "bar"
> >       assert isinstance(foo.gui, Container)
> 
> tests/test_gui_class.py:83: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> magicgui/schema/_guiclass.py:233: in __get__
>     bind_gui_to_instance(wdg, instance)
> magicgui/schema/_guiclass.py:274: in bind_gui_to_instance
>     widget.changed.connect_setattr(
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = <SignalInstance 'changed' on SpinBox(value=1, annotation=<class 
> 'int'>, name='a')>
> obj = test_on_existing_dataclass.<locals>.Foo(a=1, b='bar'), attr = 'a'
> maxargs = <object object at 0x7f0102bf5c70>
> 
>     def connect_setattr(
>         self,
>         obj: object,
>         attr: str,
>         maxargs: int | None | object = _NULL,
>         *,
>         on_ref_error: RefErrorChoice = "warn",
>         priority: int = 0,
>     ) -> WeakCallback[None]:
>         """Bind an object attribute to the emitted value of this signal.
>     
>         Equivalent to calling `self.connect(functools.partial(setattr, obj, 
> attr))`,
>         but with additional weakref safety (i.e. a strong reference to `obj` 
> will not
>         be retained). The return object can be used to
>         [`disconnect()`][psygnal.SignalInstance.disconnect], (or you can use
>         [`disconnect_setattr()`][psygnal.SignalInstance.disconnect_setattr]).
>     
>         Parameters
>         ----------
>         obj : object
>             An object.
>         attr : str
>             The name of an attribute on `obj` that should be set to the value 
> of this
>             signal when emitted.
>         maxargs : Optional[int]
>             max number of positional args to accept
>         on_ref_error: {'raise', 'warn', 'ignore'}, optional
>             What to do if a weak reference cannot be created.  If 'raise', a
>             ReferenceError will be raised.  If 'warn' (default), a warning 
> will be
>             issued and a strong-reference will be used. If 'ignore' a 
> strong-reference
>             will be used (silently).
>         priority : int
>             The priority of the callback. This is used to determine the order 
> in which
>             callbacks are called when multiple are connected to the same 
> signal.
>             Higher priority callbacks are called first. Negative values are 
> allowed.
>             The default is 0.
>     
>         Returns
>         -------
>         Tuple
>             (weakref.ref, name, callable).  Reference to the object, name of 
> the
>             attribute, and setattr closure.  Can be used to disconnect the 
> slot.
>     
>         Raises
>         ------
>         ValueError
>             If this is not a single-value signal
>         AttributeError
>             If `obj` has no attribute `attr`.
>     
>         Examples
>         --------
>         >>> class T:
>         ...     sig = Signal(int)
>         >>> class SomeObj:
>         ...     x = 1
>         >>> t = T()
>         >>> my_obj = SomeObj()
>         >>> t.sig.connect_setattr(my_obj, "x")
>         >>> t.sig.emit(5)
>         >>> assert my_obj.x == 5
>         """
>         if maxargs is _NULL:
> >           warnings.warn(
>                 "The default value of maxargs will change from `None` to `1` 
> in "
>                 "version 0.11. To silence this warning, provide an explicit 
> value for "
>                 "maxargs (`None` for current behavior, `1` for future 
> behavior).",
>                 FutureWarning,
>                 stacklevel=2,
>             )
> E           FutureWarning: The default value of maxargs will change from 
> `None` to `1` in version 0.11. To silence this warning, provide an explicit 
> value for maxargs (`None` for current behavior, `1` for future behavior).
> 
> /usr/lib/python3/dist-packages/psygnal/_signal.py:858: FutureWarning
> _____________________________ test_slots_guiclass 
> ______________________________
> 
>     @pytest.mark.skipif(sys.version_info < (3, 10), reason="slots are 
> python3.10 or higher")
>     def test_slots_guiclass():
>         """Test that the guiclass decorator works as expected."""
>     
>         psyg_v = tuple(int(x.split("r")[0]) for x in 
> psygnal.__version__.split(".")[:3])
>         old_psygnal = psyg_v < (0, 6, 1)
>     
>         @guiclass(slots=True)
>         class Foo:
>             a: int = 1
>             b: str = "bar"
>     
>         foo = Foo()
>     
>         with (
>             pytest.warns(UserWarning, match="Please update psygnal")
>             if old_psygnal
>             else contextlib.nullcontext()
>         ):
> >           gui = foo.gui
> 
> tests/test_gui_class.py:105: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> magicgui/schema/_guiclass.py:233: in __get__
>     bind_gui_to_instance(wdg, instance)
> magicgui/schema/_guiclass.py:274: in bind_gui_to_instance
>     widget.changed.connect_setattr(
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = <SignalInstance 'changed' on SpinBox(value=1, annotation=<class 
> 'int'>, name='a')>
> obj = test_slots_guiclass.<locals>.Foo(a=1, b='bar'), attr = 'a'
> maxargs = <object object at 0x7f0102bf5c70>
> 
>     def connect_setattr(
>         self,
>         obj: object,
>         attr: str,
>         maxargs: int | None | object = _NULL,
>         *,
>         on_ref_error: RefErrorChoice = "warn",
>         priority: int = 0,
>     ) -> WeakCallback[None]:
>         """Bind an object attribute to the emitted value of this signal.
>     
>         Equivalent to calling `self.connect(functools.partial(setattr, obj, 
> attr))`,
>         but with additional weakref safety (i.e. a strong reference to `obj` 
> will not
>         be retained). The return object can be used to
>         [`disconnect()`][psygnal.SignalInstance.disconnect], (or you can use
>         [`disconnect_setattr()`][psygnal.SignalInstance.disconnect_setattr]).
>     
>         Parameters
>         ----------
>         obj : object
>             An object.
>         attr : str
>             The name of an attribute on `obj` that should be set to the value 
> of this
>             signal when emitted.
>         maxargs : Optional[int]
>             max number of positional args to accept
>         on_ref_error: {'raise', 'warn', 'ignore'}, optional
>             What to do if a weak reference cannot be created.  If 'raise', a
>             ReferenceError will be raised.  If 'warn' (default), a warning 
> will be
>             issued and a strong-reference will be used. If 'ignore' a 
> strong-reference
>             will be used (silently).
>         priority : int
>             The priority of the callback. This is used to determine the order 
> in which
>             callbacks are called when multiple are connected to the same 
> signal.
>             Higher priority callbacks are called first. Negative values are 
> allowed.
>             The default is 0.
>     
>         Returns
>         -------
>         Tuple
>             (weakref.ref, name, callable).  Reference to the object, name of 
> the
>             attribute, and setattr closure.  Can be used to disconnect the 
> slot.
>     
>         Raises
>         ------
>         ValueError
>             If this is not a single-value signal
>         AttributeError
>             If `obj` has no attribute `attr`.
>     
>         Examples
>         --------
>         >>> class T:
>         ...     sig = Signal(int)
>         >>> class SomeObj:
>         ...     x = 1
>         >>> t = T()
>         >>> my_obj = SomeObj()
>         >>> t.sig.connect_setattr(my_obj, "x")
>         >>> t.sig.emit(5)
>         >>> assert my_obj.x == 5
>         """
>         if maxargs is _NULL:
> >           warnings.warn(
>                 "The default value of maxargs will change from `None` to `1` 
> in "
>                 "version 0.11. To silence this warning, provide an explicit 
> value for "
>                 "maxargs (`None` for current behavior, `1` for future 
> behavior).",
>                 FutureWarning,
>                 stacklevel=2,
>             )
> E           FutureWarning: The default value of maxargs will change from 
> `None` to `1` in version 0.11. To silence this warning, provide an explicit 
> value for maxargs (`None` for current behavior, `1` for future behavior).
> 
> /usr/lib/python3/dist-packages/psygnal/_signal.py:858: FutureWarning
> ____________________________ test_guiclass_as_class 
> ____________________________
> 
>     def test_guiclass_as_class():
>         # variant on @guiclass, using class instead of decorator
>         class T2(GuiClass):
>             x: int
>             y: str = "hi"
>     
>             @button
>             def foo(self):
>                 return asdict(self)
>     
>         t2 = T2(1)
>         assert t2.x == 1
>         assert t2.y == "hi"
> >       assert t2.gui.x.value == 1
> 
> tests/test_gui_class.py:141: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> magicgui/schema/_guiclass.py:233: in __get__
>     bind_gui_to_instance(wdg, instance)
> magicgui/schema/_guiclass.py:274: in bind_gui_to_instance
>     widget.changed.connect_setattr(
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = <SignalInstance 'changed' on SpinBox(value=1, annotation=<class 
> 'int'>, name='x')>
> obj = test_guiclass_as_class.<locals>.T2(x=1, y='hi'), attr = 'x'
> maxargs = <object object at 0x7f0102bf5c70>
> 
>     def connect_setattr(
>         self,
>         obj: object,
>         attr: str,
>         maxargs: int | None | object = _NULL,
>         *,
>         on_ref_error: RefErrorChoice = "warn",
>         priority: int = 0,
>     ) -> WeakCallback[None]:
>         """Bind an object attribute to the emitted value of this signal.
>     
>         Equivalent to calling `self.connect(functools.partial(setattr, obj, 
> attr))`,
>         but with additional weakref safety (i.e. a strong reference to `obj` 
> will not
>         be retained). The return object can be used to
>         [`disconnect()`][psygnal.SignalInstance.disconnect], (or you can use
>         [`disconnect_setattr()`][psygnal.SignalInstance.disconnect_setattr]).
>     
>         Parameters
>         ----------
>         obj : object
>             An object.
>         attr : str
>             The name of an attribute on `obj` that should be set to the value 
> of this
>             signal when emitted.
>         maxargs : Optional[int]
>             max number of positional args to accept
>         on_ref_error: {'raise', 'warn', 'ignore'}, optional
>             What to do if a weak reference cannot be created.  If 'raise', a
>             ReferenceError will be raised.  If 'warn' (default), a warning 
> will be
>             issued and a strong-reference will be used. If 'ignore' a 
> strong-reference
>             will be used (silently).
>         priority : int
>             The priority of the callback. This is used to determine the order 
> in which
>             callbacks are called when multiple are connected to the same 
> signal.
>             Higher priority callbacks are called first. Negative values are 
> allowed.
>             The default is 0.
>     
>         Returns
>         -------
>         Tuple
>             (weakref.ref, name, callable).  Reference to the object, name of 
> the
>             attribute, and setattr closure.  Can be used to disconnect the 
> slot.
>     
>         Raises
>         ------
>         ValueError
>             If this is not a single-value signal
>         AttributeError
>             If `obj` has no attribute `attr`.
>     
>         Examples
>         --------
>         >>> class T:
>         ...     sig = Signal(int)
>         >>> class SomeObj:
>         ...     x = 1
>         >>> t = T()
>         >>> my_obj = SomeObj()
>         >>> t.sig.connect_setattr(my_obj, "x")
>         >>> t.sig.emit(5)
>         >>> assert my_obj.x == 5
>         """
>         if maxargs is _NULL:
> >           warnings.warn(
>                 "The default value of maxargs will change from `None` to `1` 
> in "
>                 "version 0.11. To silence this warning, provide an explicit 
> value for "
>                 "maxargs (`None` for current behavior, `1` for future 
> behavior).",
>                 FutureWarning,
>                 stacklevel=2,
>             )
> E           FutureWarning: The default value of maxargs will change from 
> `None` to `1` in version 0.11. To silence this warning, provide an explicit 
> value for maxargs (`None` for current behavior, `1` for future behavior).
> 
> /usr/lib/python3/dist-packages/psygnal/_signal.py:858: FutureWarning
> =========================== short test summary info 
> ============================
> FAILED tests/test_gui_class.py::test_guiclass - FutureWarning: The default 
> va...
> FAILED tests/test_gui_class.py::test_on_existing_dataclass - FutureWarning: 
> T...
> FAILED tests/test_gui_class.py::test_slots_guiclass - FutureWarning: The 
> defa...
> FAILED tests/test_gui_class.py::test_guiclass_as_class - FutureWarning: The 
> d...
> ============= 4 failed, 278 passed, 33 skipped, 1 xfailed in 7.02s 
> =============
> E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_magicgui/build; python3.11 -m pytest 
> tests
> I: pybuild base:311: cd 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magicgui/build; python3.12 -m pytest 
> tests
> ============================= test session starts 
> ==============================
> platform linux -- Python 3.12.4, pytest-8.2.2, pluggy-1.5.0
> PyQt5 5.15.10 -- Qt runtime 5.15.13 -- Qt compiled 5.15.13
> rootdir: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magicgui/build
> configfile: pyproject.toml
> plugins: xvfb-3.0.0, qt-4.3.1
> collected 313 items / 3 skipped
> 
> tests/test_application.py .                                              [  
> 0%]
> tests/test_backends.py s.........                                        [  
> 3%]
> tests/test_container.py ..............                                   [  
> 7%]
> tests/test_docs.py ss.                                                   [  
> 8%]
> tests/test_factory.py ..........                                         [ 
> 12%]
> tests/test_gui_class.py F.FFF                                            [ 
> 13%]
> tests/test_magicgui.py ...................x............................. [ 
> 29%]
>                                                                          [ 
> 29%]
> tests/test_persistence.py ...                                            [ 
> 30%]
> tests/test_signature.py ....                                             [ 
> 31%]
> tests/test_table.py ............................sss.........             [ 
> 44%]
> tests/test_types.py ...............                                      [ 
> 49%]
> tests/test_ui_field.py s.ss....ss.                                       [ 
> 52%]
> tests/test_widgets.py ......s.s..ss..s.ss..ss.sss.s..s.........s......s. [ 
> 68%]
> s.......s..s............................................................ [ 
> 91%]
> ..........................                                               
> [100%]
> 
> =================================== FAILURES 
> ===================================
> ________________________________ test_guiclass 
> _________________________________
> 
>     def test_guiclass():
>         """Test that the guiclass decorator works as expected."""
>         mock = Mock()
>     
>         @guiclass
>         class Foo:
>             a: int = 1
>             b: str = "bar"
>     
>             @button
>             def func(self):
>                 mock(asdict(self))
>     
>             # example recommended for type checking
>             if TYPE_CHECKING:
>                 gui: ClassVar[Container]
>                 events: ClassVar[psygnal.SignalGroup]
>     
>         foo = Foo()
>     
>         assert foo.a == 1
>         assert foo.b == "bar"
>     
> >       assert isinstance(foo.gui, Container)
> 
> tests/test_gui_class.py:43: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> magicgui/schema/_guiclass.py:233: in __get__
>     bind_gui_to_instance(wdg, instance)
> magicgui/schema/_guiclass.py:274: in bind_gui_to_instance
>     widget.changed.connect_setattr(
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = <SignalInstance 'changed' on SpinBox(value=1, annotation=<class 
> 'int'>, name='a')>
> obj = test_guiclass.<locals>.Foo(a=1, b='bar'), attr = 'a'
> maxargs = <object object at 0x7f93cda75e80>
> 
>     def connect_setattr(
>         self,
>         obj: object,
>         attr: str,
>         maxargs: int | None | object = _NULL,
>         *,
>         on_ref_error: RefErrorChoice = "warn",
>         priority: int = 0,
>     ) -> WeakCallback[None]:
>         """Bind an object attribute to the emitted value of this signal.
>     
>         Equivalent to calling `self.connect(functools.partial(setattr, obj, 
> attr))`,
>         but with additional weakref safety (i.e. a strong reference to `obj` 
> will not
>         be retained). The return object can be used to
>         [`disconnect()`][psygnal.SignalInstance.disconnect], (or you can use
>         [`disconnect_setattr()`][psygnal.SignalInstance.disconnect_setattr]).
>     
>         Parameters
>         ----------
>         obj : object
>             An object.
>         attr : str
>             The name of an attribute on `obj` that should be set to the value 
> of this
>             signal when emitted.
>         maxargs : Optional[int]
>             max number of positional args to accept
>         on_ref_error: {'raise', 'warn', 'ignore'}, optional
>             What to do if a weak reference cannot be created.  If 'raise', a
>             ReferenceError will be raised.  If 'warn' (default), a warning 
> will be
>             issued and a strong-reference will be used. If 'ignore' a 
> strong-reference
>             will be used (silently).
>         priority : int
>             The priority of the callback. This is used to determine the order 
> in which
>             callbacks are called when multiple are connected to the same 
> signal.
>             Higher priority callbacks are called first. Negative values are 
> allowed.
>             The default is 0.
>     
>         Returns
>         -------
>         Tuple
>             (weakref.ref, name, callable).  Reference to the object, name of 
> the
>             attribute, and setattr closure.  Can be used to disconnect the 
> slot.
>     
>         Raises
>         ------
>         ValueError
>             If this is not a single-value signal
>         AttributeError
>             If `obj` has no attribute `attr`.
>     
>         Examples
>         --------
>         >>> class T:
>         ...     sig = Signal(int)
>         >>> class SomeObj:
>         ...     x = 1
>         >>> t = T()
>         >>> my_obj = SomeObj()
>         >>> t.sig.connect_setattr(my_obj, "x")
>         >>> t.sig.emit(5)
>         >>> assert my_obj.x == 5
>         """
>         if maxargs is _NULL:
> >           warnings.warn(
>                 "The default value of maxargs will change from `None` to `1` 
> in "
>                 "version 0.11. To silence this warning, provide an explicit 
> value for "
>                 "maxargs (`None` for current behavior, `1` for future 
> behavior).",
>                 FutureWarning,
>                 stacklevel=2,
>             )
> E           FutureWarning: The default value of maxargs will change from 
> `None` to `1` in version 0.11. To silence this warning, provide an explicit 
> value for maxargs (`None` for current behavior, `1` for future behavior).
> 
> /usr/lib/python3/dist-packages/psygnal/_signal.py:858: FutureWarning
> __________________________ test_on_existing_dataclass 
> __________________________
> 
>     def test_on_existing_dataclass():
>         """Test that the guiclass decorator works on pre-existing 
> dataclasses."""
>     
>         @guiclass
>         @dataclass
>         class Foo:
>             a: int = 1
>             b: str = "bar"
>     
>         foo = Foo()
>         assert foo.a == 1
>         assert foo.b == "bar"
> >       assert isinstance(foo.gui, Container)
> 
> tests/test_gui_class.py:83: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> magicgui/schema/_guiclass.py:233: in __get__
>     bind_gui_to_instance(wdg, instance)
> magicgui/schema/_guiclass.py:274: in bind_gui_to_instance
>     widget.changed.connect_setattr(
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = <SignalInstance 'changed' on SpinBox(value=1, annotation=<class 
> 'int'>, name='a')>
> obj = test_on_existing_dataclass.<locals>.Foo(a=1, b='bar'), attr = 'a'
> maxargs = <object object at 0x7f93cda75e80>
> 
>     def connect_setattr(
>         self,
>         obj: object,
>         attr: str,
>         maxargs: int | None | object = _NULL,
>         *,
>         on_ref_error: RefErrorChoice = "warn",
>         priority: int = 0,
>     ) -> WeakCallback[None]:
>         """Bind an object attribute to the emitted value of this signal.
>     
>         Equivalent to calling `self.connect(functools.partial(setattr, obj, 
> attr))`,
>         but with additional weakref safety (i.e. a strong reference to `obj` 
> will not
>         be retained). The return object can be used to
>         [`disconnect()`][psygnal.SignalInstance.disconnect], (or you can use
>         [`disconnect_setattr()`][psygnal.SignalInstance.disconnect_setattr]).
>     
>         Parameters
>         ----------
>         obj : object
>             An object.
>         attr : str
>             The name of an attribute on `obj` that should be set to the value 
> of this
>             signal when emitted.
>         maxargs : Optional[int]
>             max number of positional args to accept
>         on_ref_error: {'raise', 'warn', 'ignore'}, optional
>             What to do if a weak reference cannot be created.  If 'raise', a
>             ReferenceError will be raised.  If 'warn' (default), a warning 
> will be
>             issued and a strong-reference will be used. If 'ignore' a 
> strong-reference
>             will be used (silently).
>         priority : int
>             The priority of the callback. This is used to determine the order 
> in which
>             callbacks are called when multiple are connected to the same 
> signal.
>             Higher priority callbacks are called first. Negative values are 
> allowed.
>             The default is 0.
>     
>         Returns
>         -------
>         Tuple
>             (weakref.ref, name, callable).  Reference to the object, name of 
> the
>             attribute, and setattr closure.  Can be used to disconnect the 
> slot.
>     
>         Raises
>         ------
>         ValueError
>             If this is not a single-value signal
>         AttributeError
>             If `obj` has no attribute `attr`.
>     
>         Examples
>         --------
>         >>> class T:
>         ...     sig = Signal(int)
>         >>> class SomeObj:
>         ...     x = 1
>         >>> t = T()
>         >>> my_obj = SomeObj()
>         >>> t.sig.connect_setattr(my_obj, "x")
>         >>> t.sig.emit(5)
>         >>> assert my_obj.x == 5
>         """
>         if maxargs is _NULL:
> >           warnings.warn(
>                 "The default value of maxargs will change from `None` to `1` 
> in "
>                 "version 0.11. To silence this warning, provide an explicit 
> value for "
>                 "maxargs (`None` for current behavior, `1` for future 
> behavior).",
>                 FutureWarning,
>                 stacklevel=2,
>             )
> E           FutureWarning: The default value of maxargs will change from 
> `None` to `1` in version 0.11. To silence this warning, provide an explicit 
> value for maxargs (`None` for current behavior, `1` for future behavior).
> 
> /usr/lib/python3/dist-packages/psygnal/_signal.py:858: FutureWarning
> _____________________________ test_slots_guiclass 
> ______________________________
> 
>     @pytest.mark.skipif(sys.version_info < (3, 10), reason="slots are 
> python3.10 or higher")
>     def test_slots_guiclass():
>         """Test that the guiclass decorator works as expected."""
>     
>         psyg_v = tuple(int(x.split("r")[0]) for x in 
> psygnal.__version__.split(".")[:3])
>         old_psygnal = psyg_v < (0, 6, 1)
>     
>         @guiclass(slots=True)
>         class Foo:
>             a: int = 1
>             b: str = "bar"
>     
>         foo = Foo()
>     
>         with (
>             pytest.warns(UserWarning, match="Please update psygnal")
>             if old_psygnal
>             else contextlib.nullcontext()
>         ):
> >           gui = foo.gui
> 
> tests/test_gui_class.py:105: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> magicgui/schema/_guiclass.py:233: in __get__
>     bind_gui_to_instance(wdg, instance)
> magicgui/schema/_guiclass.py:274: in bind_gui_to_instance
>     widget.changed.connect_setattr(
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = <SignalInstance 'changed' on SpinBox(value=1, annotation=<class 
> 'int'>, name='a')>
> obj = test_slots_guiclass.<locals>.Foo(a=1, b='bar'), attr = 'a'
> maxargs = <object object at 0x7f93cda75e80>
> 
>     def connect_setattr(
>         self,
>         obj: object,
>         attr: str,
>         maxargs: int | None | object = _NULL,
>         *,
>         on_ref_error: RefErrorChoice = "warn",
>         priority: int = 0,
>     ) -> WeakCallback[None]:
>         """Bind an object attribute to the emitted value of this signal.
>     
>         Equivalent to calling `self.connect(functools.partial(setattr, obj, 
> attr))`,
>         but with additional weakref safety (i.e. a strong reference to `obj` 
> will not
>         be retained). The return object can be used to
>         [`disconnect()`][psygnal.SignalInstance.disconnect], (or you can use
>         [`disconnect_setattr()`][psygnal.SignalInstance.disconnect_setattr]).
>     
>         Parameters
>         ----------
>         obj : object
>             An object.
>         attr : str
>             The name of an attribute on `obj` that should be set to the value 
> of this
>             signal when emitted.
>         maxargs : Optional[int]
>             max number of positional args to accept
>         on_ref_error: {'raise', 'warn', 'ignore'}, optional
>             What to do if a weak reference cannot be created.  If 'raise', a
>             ReferenceError will be raised.  If 'warn' (default), a warning 
> will be
>             issued and a strong-reference will be used. If 'ignore' a 
> strong-reference
>             will be used (silently).
>         priority : int
>             The priority of the callback. This is used to determine the order 
> in which
>             callbacks are called when multiple are connected to the same 
> signal.
>             Higher priority callbacks are called first. Negative values are 
> allowed.
>             The default is 0.
>     
>         Returns
>         -------
>         Tuple
>             (weakref.ref, name, callable).  Reference to the object, name of 
> the
>             attribute, and setattr closure.  Can be used to disconnect the 
> slot.
>     
>         Raises
>         ------
>         ValueError
>             If this is not a single-value signal
>         AttributeError
>             If `obj` has no attribute `attr`.
>     
>         Examples
>         --------
>         >>> class T:
>         ...     sig = Signal(int)
>         >>> class SomeObj:
>         ...     x = 1
>         >>> t = T()
>         >>> my_obj = SomeObj()
>         >>> t.sig.connect_setattr(my_obj, "x")
>         >>> t.sig.emit(5)
>         >>> assert my_obj.x == 5
>         """
>         if maxargs is _NULL:
> >           warnings.warn(
>                 "The default value of maxargs will change from `None` to `1` 
> in "
>                 "version 0.11. To silence this warning, provide an explicit 
> value for "
>                 "maxargs (`None` for current behavior, `1` for future 
> behavior).",
>                 FutureWarning,
>                 stacklevel=2,
>             )
> E           FutureWarning: The default value of maxargs will change from 
> `None` to `1` in version 0.11. To silence this warning, provide an explicit 
> value for maxargs (`None` for current behavior, `1` for future behavior).
> 
> /usr/lib/python3/dist-packages/psygnal/_signal.py:858: FutureWarning
> ____________________________ test_guiclass_as_class 
> ____________________________
> 
>     def test_guiclass_as_class():
>         # variant on @guiclass, using class instead of decorator
>         class T2(GuiClass):
>             x: int
>             y: str = "hi"
>     
>             @button
>             def foo(self):
>                 return asdict(self)
>     
>         t2 = T2(1)
>         assert t2.x == 1
>         assert t2.y == "hi"
> >       assert t2.gui.x.value == 1
> 
> tests/test_gui_class.py:141: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> magicgui/schema/_guiclass.py:233: in __get__
>     bind_gui_to_instance(wdg, instance)
> magicgui/schema/_guiclass.py:274: in bind_gui_to_instance
>     widget.changed.connect_setattr(
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = <SignalInstance 'changed' on SpinBox(value=1, annotation=<class 
> 'int'>, name='x')>
> obj = test_guiclass_as_class.<locals>.T2(x=1, y='hi'), attr = 'x'
> maxargs = <object object at 0x7f93cda75e80>
> 
>     def connect_setattr(
>         self,
>         obj: object,
>         attr: str,
>         maxargs: int | None | object = _NULL,
>         *,
>         on_ref_error: RefErrorChoice = "warn",
>         priority: int = 0,
>     ) -> WeakCallback[None]:
>         """Bind an object attribute to the emitted value of this signal.
>     
>         Equivalent to calling `self.connect(functools.partial(setattr, obj, 
> attr))`,
>         but with additional weakref safety (i.e. a strong reference to `obj` 
> will not
>         be retained). The return object can be used to
>         [`disconnect()`][psygnal.SignalInstance.disconnect], (or you can use
>         [`disconnect_setattr()`][psygnal.SignalInstance.disconnect_setattr]).
>     
>         Parameters
>         ----------
>         obj : object
>             An object.
>         attr : str
>             The name of an attribute on `obj` that should be set to the value 
> of this
>             signal when emitted.
>         maxargs : Optional[int]
>             max number of positional args to accept
>         on_ref_error: {'raise', 'warn', 'ignore'}, optional
>             What to do if a weak reference cannot be created.  If 'raise', a
>             ReferenceError will be raised.  If 'warn' (default), a warning 
> will be
>             issued and a strong-reference will be used. If 'ignore' a 
> strong-reference
>             will be used (silently).
>         priority : int
>             The priority of the callback. This is used to determine the order 
> in which
>             callbacks are called when multiple are connected to the same 
> signal.
>             Higher priority callbacks are called first. Negative values are 
> allowed.
>             The default is 0.
>     
>         Returns
>         -------
>         Tuple
>             (weakref.ref, name, callable).  Reference to the object, name of 
> the
>             attribute, and setattr closure.  Can be used to disconnect the 
> slot.
>     
>         Raises
>         ------
>         ValueError
>             If this is not a single-value signal
>         AttributeError
>             If `obj` has no attribute `attr`.
>     
>         Examples
>         --------
>         >>> class T:
>         ...     sig = Signal(int)
>         >>> class SomeObj:
>         ...     x = 1
>         >>> t = T()
>         >>> my_obj = SomeObj()
>         >>> t.sig.connect_setattr(my_obj, "x")
>         >>> t.sig.emit(5)
>         >>> assert my_obj.x == 5
>         """
>         if maxargs is _NULL:
> >           warnings.warn(
>                 "The default value of maxargs will change from `None` to `1` 
> in "
>                 "version 0.11. To silence this warning, provide an explicit 
> value for "
>                 "maxargs (`None` for current behavior, `1` for future 
> behavior).",
>                 FutureWarning,
>                 stacklevel=2,
>             )
> E           FutureWarning: The default value of maxargs will change from 
> `None` to `1` in version 0.11. To silence this warning, provide an explicit 
> value for maxargs (`None` for current behavior, `1` for future behavior).
> 
> /usr/lib/python3/dist-packages/psygnal/_signal.py:858: FutureWarning
> =========================== short test summary info 
> ============================
> FAILED tests/test_gui_class.py::test_guiclass - FutureWarning: The default 
> va...
> FAILED tests/test_gui_class.py::test_on_existing_dataclass - FutureWarning: 
> T...
> FAILED tests/test_gui_class.py::test_slots_guiclass - FutureWarning: The 
> defa...
> FAILED tests/test_gui_class.py::test_guiclass_as_class - FutureWarning: The 
> d...
> ============= 4 failed, 278 passed, 33 skipped, 1 xfailed in 7.59s 
> =============
> E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magicgui/build; python3.12 -m pytest 
> tests
> dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.11 
> 3.12" returned exit code 13


The full build log is available from:
http://qa-logs.debian.net/2024/07/02/magicgui_0.7.2-4_unstable.log

All bugs filed during this archive rebuild are listed at:
https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20240702;[email protected]
or:
https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20240702&[email protected]&allbugs=1&cseverity=1&ctags=1&caffected=1#results

A list of current common problems and possible solutions is available at
http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute!

If you reassign this bug to another package, please mark it as 'affects'-ing
this package. See https://www.debian.org/Bugs/server-control#affects

If you fail to reproduce this, please provide a build log and diff it with mine
so that we can identify if something relevant changed in the meantime.

--- End Message ---
--- Begin Message ---
Source: magicgui
Source-Version: 0.9.1-1
Done: Roland Mas <[email protected]>

We believe that the bug you reported is fixed in the latest version of
magicgui, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to [email protected],
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Roland Mas <[email protected]> (supplier of updated magicgui package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [email protected])


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Format: 1.8
Date: Mon, 23 Sep 2024 22:32:23 +0200
Source: magicgui
Architecture: source
Version: 0.9.1-1
Distribution: unstable
Urgency: medium
Maintainer: Debian Python Team <[email protected]>
Changed-By: Roland Mas <[email protected]>
Closes: 1074724
Changes:
 magicgui (0.9.1-1) unstable; urgency=medium
 .
   * New upstream release. This fixes: "FTBFS: dh_auto_test: error: pybuild
     --test --test-pytest -i python{version} -p &quot;3.11 3.12&quot;
     returned exit code 13", thanks to Lucas Nussbaum (Closes: #1074724).
   * Skip testcase that requires network access.
Checksums-Sha1:
 09cb5626857a8e9ccdfe2030a238e4bdc7237677 2380 magicgui_0.9.1-1.dsc
 00e341bf8a00b456aa52b0b1059bf3df67b0c99a 20938738 magicgui_0.9.1.orig.tar.gz
 745a9661c8e62b22559e51582f7cbbac43386475 3504 magicgui_0.9.1-1.debian.tar.xz
 b070f9ef0eba44d3b01c8aa0c43e8db8f2914d83 40098 magicgui_0.9.1-1_amd64.buildinfo
Checksums-Sha256:
 8355459fbf066416540aab5905c75872116727f6479adb373a61bb30bebc2fb8 2380 
magicgui_0.9.1-1.dsc
 e8c1c7ed281e62ec858771a76515abd705dbe3d46da2ee834ce6983a4403b94d 20938738 
magicgui_0.9.1.orig.tar.gz
 173929b426ee549d8e3637b71881bff3662a98219654103cc253b3af7cd22970 3504 
magicgui_0.9.1-1.debian.tar.xz
 2275506359e1de61978e2bf9ac2754e367bcc0597d3b3fc4eb7c3467c4fe5cfb 40098 
magicgui_0.9.1-1_amd64.buildinfo
Files:
 0698d6ef7b82a368eff7c6b2cc5daa7c 2380 python optional magicgui_0.9.1-1.dsc
 08f8313327000b3400fc78bff3b32f96 20938738 python optional 
magicgui_0.9.1.orig.tar.gz
 6c0443b8e813ca1200d0a07a90656e0c 3504 python optional 
magicgui_0.9.1-1.debian.tar.xz
 89833f787631d019c1f1ed4b0a89d97d 40098 python optional 
magicgui_0.9.1-1_amd64.buildinfo

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEtBU2D1kett1zr/uD0w3s0lmTIvwFAmbx0l4ACgkQ0w3s0lmT
IvxX0A/+NM7ZKo98I8DGlesL69Z0HQ0dVWSlsGSEmX9pzseSYQBglEWzz8npYk1R
lI0eZeGcEOyXpIDXiCHGWmxDoNTJKbC8PHTDh/P2etDiBUoVHWur6jdkllkDUB7D
X1JbjO+rAoynpEo6LYsixiQE00ZwgWr0+wp0+TtWwJ1g9lV+XtQrswGZ7h8JJs3q
Po8Mumbo+VV1jVjhk5CwvEhNQ2iyFdiR1aMQHSnbDzP+8mcQyxG4iWkrYAJM1Ur8
3nR+tb2LK2P9mf0sJTMGy4vQ+agNS0modn8jJJlaKG76X1yV4FRTzoxCHaDlit5I
cXX/gUFtMKEEeESD7zyd26gzwEZIoycDJWhUGWFM8c+H2JnSOGF4U195UIpIB0yP
AxUE2rzHgoZxaQbCUDjr8zH7mclq8XcyUYwUgRCCUH5J/LG++MnyCFOCS+AG/0FC
rFIB0ZRA4AA/7I3KM+gEHypMXheOj6TyOR2OeaXNB37WTpHuRW3QBNrd7XUv961Z
IStf5XFEEaqxpjKB6imWR4fwSrtHbO6QhWLuTlLe8zzeORNPTociTAwg9iC72QnT
hCesEY2IR9wXMupNzGrT4/G2g0a4gl91+xPxzaqJFT+wRXPIyEqHdUCMdeu55qst
DbOFzgZFOrIYrqX46FnyXH88DIRxYdX/j8qKoSlqL5WSMpZ7C2k=
=cwW6
-----END PGP SIGNATURE-----

Attachment: pgpWLNoqcHcoX.pgp
Description: PGP signature


--- End Message ---

Reply via email to