- Notifications
You must be signed in to change notification settings - Fork1.3k
Closed
Description
Feature
I'm trying to fix@unittest.expectedFailure
test_inplace_on_self
in filetest_set.py
.
def test_inplace_on_self(self): t = self.s.copy() t |= t self.assertEqual(t, self.s) t &= t self.assertEqual(t, self.s). -> FAIL t -= t self.assertEqual(t, self.thetype()). -> FAIL t = self.s.copy() t ^= t self.assertEqual(t, self.thetype())
I found the two operator fail.&=
and-=
is not work correctly.
[&=
]
- RustPython
>>>>> s = set({'a', 'b', 'c'})>>>>> s &= s>>>>> sset()
- CPython
>>> s = set({'a', 'b', 'c'})>>> s &= s>>> s{'b', 'c', 'a'}
[-=
]
- RustPython
>>>>> s = set({'a', 'b', 'c'})>>>>> s -= sTraceback (most recent call last): File "<stdin>", line 1, in <module>RuntimeError: set changed size during iteration
Maybe the points to start
&=
#[pymethod(magic)]fn iand(zelf: PyRef<Self>, set: AnySet, vm: &VirtualMachine) -> PyResult<PyRef<Self>> { zelf.inner .intersection_update(std::iter::once(set.into_iterable(vm)?), vm)?; Ok(zelf)}
-=
#[pymethod(magic)]fn isub(zelf: PyRef<Self>, set: AnySet, vm: &VirtualMachine) -> PyResult<PyRef<Self>> { zelf.inner .difference_update(set.into_iterable_iter(vm)?, vm)?; Ok(zelf)}