diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index 9fefd65f4b..29bf87714c 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -1002,8 +1002,6 @@ def test_programmatic_function_type_from_subclass_with_start(self): self.assertIn(e, SummerMonth) self.assertIs(type(e), SummerMonth) - # TODO: RUSTPYTHON - @unittest.expectedFailure def test_subclassing(self): if isinstance(Name, Exception): raise Name diff --git a/Lib/test/test_pickle.py b/Lib/test/test_pickle.py index 66f16f27ec..71ef8f5619 100644 --- a/Lib/test/test_pickle.py +++ b/Lib/test/test_pickle.py @@ -118,16 +118,6 @@ def test_in_band_buffers(self): # TODO: RUSTPYTHON, remove when this passes def test_nested_names(self): # TODO: RUSTPYTHON, remove when this passes super().test_nested_names() # TODO: RUSTPYTHON, remove when this passes - # TODO: RUSTPYTHON, AssertionError - @unittest.expectedFailure - def test_newobj_generic(self): # TODO: RUSTPYTHON, remove when this passes - super().test_newobj_generic() # TODO: RUSTPYTHON, remove when this passes - - # TODO: RUSTPYTHON, TypeError: cannot pickle 'weakproxy' object - @unittest.expectedFailure - def test_newobj_proxies(self): # TODO: RUSTPYTHON, remove when this passes - super().test_newobj_proxies() # TODO: RUSTPYTHON, remove when this passes - def test_notimplemented(self): # TODO: RUSTPYTHON, remove when this passes super().test_notimplemented() # TODO: RUSTPYTHON, remove when this passes @@ -233,16 +223,6 @@ def test_load_python2_str_as_bytes(self): # TODO: RUSTPYTHON, remove when this p def test_nested_names(self): # TODO: RUSTPYTHON, remove when this passes super().test_nested_names() # TODO: RUSTPYTHON, remove when this passes - # TODO: RUSTPYTHON, AssertionError: 'hello' != '' : 'hello' is not a copy of '' - @unittest.expectedFailure - def test_newobj_generic(self): # TODO: RUSTPYTHON, remove when this passes - super().test_newobj_generic() # TODO: RUSTPYTHON, remove when this passes - - # TODO: RUSTPYTHON, TypeError: cannot pickle 'weakproxy' object - @unittest.expectedFailure - def test_newobj_proxies(self): # TODO: RUSTPYTHON, remove when this passes - super().test_newobj_proxies() # TODO: RUSTPYTHON, remove when this passes - def test_notimplemented(self): # TODO: RUSTPYTHON, remove when this passes super().test_notimplemented() # TODO: RUSTPYTHON, remove when this passes diff --git a/Lib/test/test_pickletools.py b/Lib/test/test_pickletools.py index 349e0cebd6..44cd485f4b 100644 --- a/Lib/test/test_pickletools.py +++ b/Lib/test/test_pickletools.py @@ -40,16 +40,6 @@ def test_in_band_buffers(self): # TODO: RUSTPYTHON, remove when this passes def test_nested_names(self): # TODO: RUSTPYTHON, remove when this passes super().test_nested_names() - # TODO: RUSTPYTHON - @unittest.expectedFailure - def test_newobj_generic(self): # TODO: RUSTPYTHON, remove when this passes - super().test_newobj_generic() - - # TODO: RUSTPYTHON, TypeError: cannot pickle 'weakproxy' object - @unittest.expectedFailure - def test_newobj_proxies(self): # TODO: RUSTPYTHON, remove when this passes - super().test_newobj_proxies() - def test_notimplemented(self): # TODO: RUSTPYTHON, remove when this passes super().test_notimplemented() diff --git a/Lib/test/test_unicode.py b/Lib/test/test_unicode.py index a7c627800f..bf7feb66f5 100644 --- a/Lib/test/test_unicode.py +++ b/Lib/test/test_unicode.py @@ -2392,8 +2392,6 @@ def __iadd__(self, o): s += "4" self.assertEqual(s, "3") - # TODO: RUSTPYTHON - @unittest.expectedFailure def test_getnewargs(self): text = 'abc' args = text.__getnewargs__() diff --git a/vm/src/builtins/str.rs b/vm/src/builtins/str.rs index 36e7e61cdf..a1dcddecb7 100644 --- a/vm/src/builtins/str.rs +++ b/vm/src/builtins/str.rs @@ -1258,6 +1258,11 @@ impl PyStr { fn encode(zelf: PyRef, args: EncodeArgs, vm: &VirtualMachine) -> PyResult { encode_string(zelf, args.encoding, args.errors, vm) } + + #[pymethod(magic)] + fn getnewargs(zelf: PyRef, vm: &VirtualMachine) -> PyObjectRef { + (zelf.as_str(),).to_pyobject(vm) + } } impl PyStrRef {