diff --git a/tests/snippets/ellipsis.py b/tests/snippets/ellipsis.py index 20bb3a33c..ac8a89a4f 100644 --- a/tests/snippets/ellipsis.py +++ b/tests/snippets/ellipsis.py @@ -11,6 +11,9 @@ assert b is c assert b is d assert d is e +assert Ellipsis.__repr__() == 'Ellipsis' +assert Ellipsis.__reduce__() == 'Ellipsis' + assert Ellipsis is ... Ellipsis = 2 assert Ellipsis is not ... diff --git a/vm/src/obj/objellipsis.rs b/vm/src/obj/objellipsis.rs index cb188e1f1..b38e76a7c 100644 --- a/vm/src/obj/objellipsis.rs +++ b/vm/src/obj/objellipsis.rs @@ -5,7 +5,8 @@ use crate::vm::VirtualMachine; pub fn init(context: &PyContext) { extend_class!(context, &context.ellipsis_type, { "__new__" => context.new_rustfunc(ellipsis_new), - "__repr__" => context.new_rustfunc(ellipsis_repr) + "__repr__" => context.new_rustfunc(ellipsis_repr), + "__reduce__" => context.new_rustfunc(ellipsis_reduce), }); } @@ -18,3 +19,8 @@ fn ellipsis_repr(vm: &VirtualMachine, args: PyFuncArgs) -> PyResult { arg_check!(vm, args, required = [(_cls, None)]); Ok(vm.new_str("Ellipsis".to_string())) } + +fn ellipsis_reduce(vm: &VirtualMachine, args: PyFuncArgs) -> PyResult { + arg_check!(vm, args, required = [(_cls, None)]); + Ok(vm.new_str("Ellipsis".to_string())) +}