| 1026 | |
| 1027 | #[pyfunction] |
| 1028 | pub fn reversed(obj: PyObjectRef, vm: &VirtualMachine) -> PyResult { |
| 1029 | if let Some(reversed_method) = vm.get_method(obj.clone(), identifier!(vm, __reversed__)) { |
| 1030 | reversed_method?.call((), vm) |
| 1031 | } else { |
| 1032 | vm.get_method_or_type_error(obj.clone(), identifier!(vm, __getitem__), || { |
| 1033 | "argument to reversed() must be a sequence".to_owned() |
| 1034 | })?; |
| 1035 | let len = obj.length(vm)?; |
| 1036 | let obj_iterator = PyReverseSequenceIterator::new(obj, len); |
| 1037 | Ok(obj_iterator.into_pyobject(vm)) |
| 1038 | } |
| 1039 | } |
| 1040 | |
| 1041 | #[derive(FromArgs)] |
| 1042 | pub struct RoundArgs { |