-
Notifications
You must be signed in to change notification settings - Fork 247
Open
pytest-dev/pytest
#13963Description
Since the release of pytest==9.0.0 we have started seeing failures on our CI test workflow. Our test workflow runs on a matrix of [py310, py313] and the major platforms [macos-15-intel, macos-14, ubuntu-latest, windows-latest] -- all are failing in the same way.
Failing example CI run: https://github.com/gumyr/build123d/actions/runs/19248200580
Stack trace
self = <test_build_common.TestShapeList testMethod=test_filter_by>
def test_filter_by(self):
"""test the filter and sorting of Faces and Edges by axis, and
test the filter and sorting by type"""
# test by axis
with BuildPart() as test:
Box(1, 1, 1)
for axis in [Axis.X, Axis.Y, Axis.Z]:
> with self.subTest(axis=axis):
^^^^^^^^^^^^^^^^^^^^^^^
tests/test_build_common.py:470:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../../.local/share/uv/python/cpython-3.13.9-linux-x86_64-gnu/lib/python3.13/contextlib.py:148: in __exit__
next(self.gen)
../../../.local/share/uv/python/cpython-3.13.9-linux-x86_64-gnu/lib/python3.13/contextlib.py:148: in __exit__
next(self.gen)
.venv/lib/python3.13/site-packages/_pytest/unittest.py:438: in addSubTest
self.ihook.pytest_runtest_logreport(report=sub_report)
.venv/lib/python3.13/site-packages/pluggy/_hooks.py:512: in __call__
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/pluggy/_manager.py:120: in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/xdist/remote.py:289: in pytest_runtest_logreport
self.sendevent("testreport", data=data)
.venv/lib/python3.13/site-packages/xdist/remote.py:126: in sendevent
self.channel.send((name, kwargs))
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:912: in send
self.gateway._send(Message.CHANNEL_DATA, self.id, dumps_internal(item))
^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1629: in dumps_internal
return _Serializer().save(obj) # type: ignore[return-value]
^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1647: in save
self._save(obj)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1667: in _save
dispatch(self, obj)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1744: in save_tuple
self._save(item)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1667: in _save
dispatch(self, obj)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1740: in save_dict
self._write_setitem(key, value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1734: in _write_setitem
self._save(value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1667: in _save
dispatch(self, obj)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1740: in save_dict
self._write_setitem(key, value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1734: in _write_setitem
self._save(value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1667: in _save
dispatch(self, obj)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1740: in save_dict
self._write_setitem(key, value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1734: in _write_setitem
self._save(value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1667: in _save
dispatch(self, obj)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1740: in save_dict
self._write_setitem(key, value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1734: in _write_setitem
self._save(value)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <execnet.gateway_base._Serializer object at 0x7ff3f11006b0>
obj = ((0.0, 0.0, 0.0),(1.0, 0.0, 0.0))
def _save(self, obj: object) -> None:
tp = type(obj)
try:
dispatch = self._dispatch[tp]
except KeyError:
methodname = "save_" + tp.__name__
meth: Callable[[_Serializer, object], None] | None = getattr(
self.__class__, methodname, None
)
if meth is None:
> raise DumpError(f"can't serialize {tp}") from None
E execnet.gateway_base.DumpError: can't serialize <class 'build123d.geometry.Axis'>
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1665: DumpError
____________________ TestShapeList.test_filter_by_position _____________________
[gw2] linux -- Python 3.13.9 /home/runner/work/build123d/build123d/.venv/bin/python
self = <test_build_common.TestShapeList testMethod=test_filter_by_position>
def test_filter_by_position(self):
"""test the filter and sorting of Faces and Edges by position"""
with BuildPart() as test:
Box(2, 2, 2)
for axis in [Axis.X, Axis.Y, Axis.Z]:
for inclusive in [
(True, True),
(True, False),
(False, True),
(False, False),
]:
> with self.subTest(axis=axis, inclusive=inclusive):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tests/test_build_common.py:536:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../../.local/share/uv/python/cpython-3.13.9-linux-x86_64-gnu/lib/python3.13/contextlib.py:148: in __exit__
next(self.gen)
../../../.local/share/uv/python/cpython-3.13.9-linux-x86_64-gnu/lib/python3.13/contextlib.py:148: in __exit__
next(self.gen)
.venv/lib/python3.13/site-packages/_pytest/unittest.py:438: in addSubTest
self.ihook.pytest_runtest_logreport(report=sub_report)
.venv/lib/python3.13/site-packages/pluggy/_hooks.py:512: in __call__
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/pluggy/_manager.py:120: in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/xdist/remote.py:289: in pytest_runtest_logreport
self.sendevent("testreport", data=data)
.venv/lib/python3.13/site-packages/xdist/remote.py:126: in sendevent
self.channel.send((name, kwargs))
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:912: in send
self.gateway._send(Message.CHANNEL_DATA, self.id, dumps_internal(item))
^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1629: in dumps_internal
return _Serializer().save(obj) # type: ignore[return-value]
^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1647: in save
self._save(obj)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1667: in _save
dispatch(self, obj)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1744: in save_tuple
self._save(item)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1667: in _save
dispatch(self, obj)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1740: in save_dict
self._write_setitem(key, value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1734: in _write_setitem
self._save(value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1667: in _save
dispatch(self, obj)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1740: in save_dict
self._write_setitem(key, value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1734: in _write_setitem
self._save(value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1667: in _save
dispatch(self, obj)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1740: in save_dict
self._write_setitem(key, value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1734: in _write_setitem
self._save(value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1667: in _save
dispatch(self, obj)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1740: in save_dict
self._write_setitem(key, value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1734: in _write_setitem
self._save(value)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <execnet.gateway_base._Serializer object at 0x7ff3f111b8f0>
obj = ((0.0, 0.0, 0.0),(1.0, 0.0, 0.0))
def _save(self, obj: object) -> None:
tp = type(obj)
try:
dispatch = self._dispatch[tp]
except KeyError:
methodname = "save_" + tp.__name__
meth: Callable[[_Serializer, object], None] | None = getattr(
self.__class__, methodname, None
)
if meth is None:
> raise DumpError(f"can't serialize {tp}") from None
E execnet.gateway_base.DumpError: can't serialize <class 'build123d.geometry.Axis'>
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1665: DumpError
_______________________ TestShapeList.test_sort_by_type ________________________
[gw2] linux -- Python 3.13.9 /home/runner/work/build123d/build123d/.venv/bin/python
self = <test_build_common.TestShapeList testMethod=test_sort_by_type>
def test_sort_by_type(self):
"""test sorting by different attributes"""
> with self.subTest(sort_by=SortBy.AREA):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tests/test_build_common.py:569:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../../.local/share/uv/python/cpython-3.13.9-linux-x86_64-gnu/lib/python3.13/contextlib.py:148: in __exit__
next(self.gen)
../../../.local/share/uv/python/cpython-3.13.9-linux-x86_64-gnu/lib/python3.13/contextlib.py:148: in __exit__
next(self.gen)
.venv/lib/python3.13/site-packages/_pytest/unittest.py:438: in addSubTest
self.ihook.pytest_runtest_logreport(report=sub_report)
.venv/lib/python3.13/site-packages/pluggy/_hooks.py:512: in __call__
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/pluggy/_manager.py:120: in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/xdist/remote.py:289: in pytest_runtest_logreport
self.sendevent("testreport", data=data)
.venv/lib/python3.13/site-packages/xdist/remote.py:126: in sendevent
self.channel.send((name, kwargs))
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:912: in send
self.gateway._send(Message.CHANNEL_DATA, self.id, dumps_internal(item))
^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1629: in dumps_internal
return _Serializer().save(obj) # type: ignore[return-value]
^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1647: in save
self._save(obj)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1667: in _save
dispatch(self, obj)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1744: in save_tuple
self._save(item)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1667: in _save
dispatch(self, obj)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1740: in save_dict
self._write_setitem(key, value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1734: in _write_setitem
self._save(value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1667: in _save
dispatch(self, obj)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1740: in save_dict
self._write_setitem(key, value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1734: in _write_setitem
self._save(value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1667: in _save
dispatch(self, obj)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1740: in save_dict
self._write_setitem(key, value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1734: in _write_setitem
self._save(value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1667: in _save
dispatch(self, obj)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1740: in save_dict
self._write_setitem(key, value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1734: in _write_setitem
self._save(value)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <execnet.gateway_base._Serializer object at 0x7ff3f10fb530>
obj = <SortBy.AREA>
def _save(self, obj: object) -> None:
tp = type(obj)
try:
dispatch = self._dispatch[tp]
except KeyError:
methodname = "save_" + tp.__name__
meth: Callable[[_Serializer, object], None] | None = getattr(
self.__class__, methodname, None
)
if meth is None:
> raise DumpError(f"can't serialize {tp}") from None
E execnet.gateway_base.DumpError: can't serialize <enum 'SortBy'>
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1665: DumpError
______________________________ TestFace.test_wrap ______________________________
[gw1] linux -- Python 3.13.9 /home/runner/work/build123d/build123d/.venv/bin/python
self = <test_face.TestFace testMethod=test_wrap>
def test_wrap(self):
surfaces = [
part.faces().filter_by(GeomType.PLANE, reverse=True)[0]
for part in (Cylinder(5, 10), Sphere(5), Cone(5, 2, 10))
]
inner = PolarLocations(1, 5, -18).local_locations
outer = PolarLocations(3, 5, -18 + 36).local_locations
points = [p.position for pair in zip(inner, outer) for p in pair]
star = (Polygon(*points, align=Align.NONE) - Circle(0.5)).face()
planar_edge = Edge.make_line((0, 0), (3, 3))
planar_wire = Wire([planar_edge, Edge.make_line(planar_edge @ 1, (3, 0))])
for surface in surfaces:
> with self.subTest(surface=surface):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tests/test_direct_api/test_face.py:1184:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../../.local/share/uv/python/cpython-3.13.9-linux-x86_64-gnu/lib/python3.13/contextlib.py:148: in __exit__
next(self.gen)
../../../.local/share/uv/python/cpython-3.13.9-linux-x86_64-gnu/lib/python3.13/contextlib.py:148: in __exit__
next(self.gen)
.venv/lib/python3.13/site-packages/_pytest/unittest.py:438: in addSubTest
self.ihook.pytest_runtest_logreport(report=sub_report)
.venv/lib/python3.13/site-packages/pluggy/_hooks.py:512: in __call__
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/pluggy/_manager.py:120: in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/xdist/remote.py:289: in pytest_runtest_logreport
self.sendevent("testreport", data=data)
.venv/lib/python3.13/site-packages/xdist/remote.py:126: in sendevent
self.channel.send((name, kwargs))
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:912: in send
self.gateway._send(Message.CHANNEL_DATA, self.id, dumps_internal(item))
^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1629: in dumps_internal
return _Serializer().save(obj) # type: ignore[return-value]
^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1647: in save
self._save(obj)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1667: in _save
dispatch(self, obj)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1744: in save_tuple
self._save(item)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1667: in _save
dispatch(self, obj)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1740: in save_dict
self._write_setitem(key, value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1734: in _write_setitem
self._save(value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1667: in _save
dispatch(self, obj)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1740: in save_dict
self._write_setitem(key, value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1734: in _write_setitem
self._save(value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1667: in _save
dispatch(self, obj)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1740: in save_dict
self._write_setitem(key, value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1734: in _write_setitem
self._save(value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1667: in _save
dispatch(self, obj)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1740: in save_dict
self._write_setitem(key, value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1734: in _write_setitem
self._save(value)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <execnet.gateway_base._Serializer object at 0x7fc3448cc8f0>
obj = <build123d.topology.two_d.Face object at 0x7fc3449dfe50>
def _save(self, obj: object) -> None:
tp = type(obj)
try:
dispatch = self._dispatch[tp]
except KeyError:
methodname = "save_" + tp.__name__
meth: Callable[[_Serializer, object], None] | None = getattr(
self.__class__, methodname, None
)
if meth is None:
> raise DumpError(f"can't serialize {tp}") from None
E execnet.gateway_base.DumpError: can't serialize <class 'build123d.topology.two_d.Face'>
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1665: DumpError
______________________ TestMeshProperties.test_properties ______________________
[gw1] linux -- Python 3.13.9 /home/runner/work/build123d/build123d/.venv/bin/python
self = <test_mesher.TestMeshProperties testMethod=test_properties>
def test_properties(self):
# Note: MeshType.OTHER can't be used with a Solid shape
for mesh_type in [MeshType.MODEL, MeshType.SUPPORT, MeshType.SOLIDSUPPORT]:
> with self.subTest("MeshTYpe", mesh_type=mesh_type):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tests/test_mesher.py:116:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../../.local/share/uv/python/cpython-3.13.9-linux-x86_64-gnu/lib/python3.13/contextlib.py:148: in __exit__
next(self.gen)
../../../.local/share/uv/python/cpython-3.13.9-linux-x86_64-gnu/lib/python3.13/contextlib.py:148: in __exit__
next(self.gen)
.venv/lib/python3.13/site-packages/_pytest/unittest.py:438: in addSubTest
self.ihook.pytest_runtest_logreport(report=sub_report)
.venv/lib/python3.13/site-packages/pluggy/_hooks.py:512: in __call__
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/pluggy/_manager.py:120: in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/xdist/remote.py:289: in pytest_runtest_logreport
self.sendevent("testreport", data=data)
.venv/lib/python3.13/site-packages/xdist/remote.py:126: in sendevent
self.channel.send((name, kwargs))
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:912: in send
self.gateway._send(Message.CHANNEL_DATA, self.id, dumps_internal(item))
^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1629: in dumps_internal
return _Serializer().save(obj) # type: ignore[return-value]
^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1647: in save
self._save(obj)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1667: in _save
dispatch(self, obj)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1744: in save_tuple
self._save(item)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1667: in _save
dispatch(self, obj)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1740: in save_dict
self._write_setitem(key, value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1734: in _write_setitem
self._save(value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1667: in _save
dispatch(self, obj)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1740: in save_dict
self._write_setitem(key, value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1734: in _write_setitem
self._save(value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1667: in _save
dispatch(self, obj)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1740: in save_dict
self._write_setitem(key, value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1734: in _write_setitem
self._save(value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1667: in _save
dispatch(self, obj)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1740: in save_dict
self._write_setitem(key, value)
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1734: in _write_setitem
self._save(value)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <execnet.gateway_base._Serializer object at 0x7fc3356c56d0>
obj = <MeshType.MODEL>
def _save(self, obj: object) -> None:
tp = type(obj)
try:
dispatch = self._dispatch[tp]
except KeyError:
methodname = "save_" + tp.__name__
meth: Callable[[_Serializer, object], None] | None = getattr(
self.__class__, methodname, None
)
if meth is None:
> raise DumpError(f"can't serialize {tp}") from None
E execnet.gateway_base.DumpError: can't serialize <enum 'MeshType'>
.venv/lib/python3.13/site-packages/execnet/gateway_base.py:1665: DumpError
pip freeze output for a failing setup:
anytree==2.13.0
astroid==4.0.2
asttokens==3.0.0
black==25.11.0
build123d==0.10.0
cadquery-ocp==7.8.1.1.post1
cadquery-vtk==9.3.1
click==8.3.0
colorama==0.4.6
coverage==7.11.3
decorator==5.2.1
dill==0.4.0
execnet==2.1.1
executing==2.2.1
ezdxf==1.4.3
fonttools==4.60.1
iniconfig==2.3.0
ipython==9.7.0
ipython-pygments-lexers==1.1.1
isort==7.0.0
jedi==0.19.2
lib3mf==2.4.1
matplotlib-inline==0.2.1
mccabe==0.7.0
mpmath==1.3.0
mypy==1.18.2
mypy-extensions==1.1.0
numpy==2.3.4
ocp-gordon==0.1.18
ocpsvg==0.5.0
packaging==25.0
parso==0.8.5
pathspec==0.12.1
platformdirs==4.5.0
pluggy==1.6.0
prompt-toolkit==3.0.52
pure-eval==0.2.3
py-cpuinfo==9.0.0
pygments==2.19.2
pylint==4.0.2
pyparsing==3.2.5
pytest==9.0.0
pytest-benchmark==5.2.3
pytest-cov==7.0.0
pytest-xdist==3.8.0
pytokens==0.3.0
scipy==1.16.3
stack-data==0.6.3
svgelements==1.9.6
svgpathtools==1.7.1
svgwrite==1.4.3
sympy==1.14.0
tomlkit==0.13.3
traitlets==5.14.3
trianglesolver==1.2
typing-extensions==4.15.0
wcwidth==0.2.14
webcolors==24.8.0
wheel==0.45.1
Minimal reproducer test [test_reproducer.py]:
import unittest
from build123d import *
class TestShapeList(unittest.TestCase):
"""Test the ShapeList derived class"""
def test_sort_by_type(self):
"""test sorting by different attributes"""
with self.subTest(sort_by=SortBy.AREA):
with BuildPart() as test:
Wedge(1, 1, 1, 0, 0, 0.5, 0.5)
faces = test.faces().sort_by(SortBy.AREA)
self.assertEqual(faces[0].area, 0.25)
self.assertEqual(faces[-1].area, 1)
if __name__ == "__main__":
unittest.main()Failing test command:
python -m pytest -n 6 --benchmark-disable test_reproducer.py
Failing test output:
FAILED test_reproducer.py::TestShapeList::test_sort_by_type - execnet.gateway_base.DumpError: can't serialize <enum 'SortBy'>
When not using the -n option, this works fine:
python -m pytest --benchmark-disable test_reproducer.py
When using pytest==8.4.2 these BOTH pass:
python -m pytest -n 6 --benchmark-disable test_reproducer.py
python -m pytest --benchmark-disable test_reproducer.py
I strongly suspect this is related to the changes for subtests documented in the pytest==9.0.0 release notes, but I have not investigated further.
Metadata
Metadata
Assignees
Labels
No labels