| 990 | |
| 991 | #[pyfunction] |
| 992 | pub fn print(objects: PosArgs, options: PrintOptions, vm: &VirtualMachine) -> PyResult<()> { |
| 993 | let file = match options.file { |
| 994 | Some(f) => f, |
| 995 | None => sys::get_stdout(vm)?, |
| 996 | }; |
| 997 | let write = |obj: PyStrRef| vm.call_method(&file, "write", (obj,)); |
| 998 | |
| 999 | let sep = options.sep.unwrap_or_else(|| vm.ctx.new_str(" ")); |
| 1000 | |
| 1001 | let mut first = true; |
| 1002 | for object in objects { |
| 1003 | if first { |
| 1004 | first = false; |
| 1005 | } else { |
| 1006 | write(sep.clone())?; |
| 1007 | } |
| 1008 | |
| 1009 | write(object.str(vm)?)?; |
| 1010 | } |
| 1011 | |
| 1012 | let end = options.end.unwrap_or_else(|| vm.ctx.new_str("\n")); |
| 1013 | write(end)?; |
| 1014 | |
| 1015 | if options.flush.into() { |
| 1016 | vm.call_method(&file, "flush", ())?; |
| 1017 | } |
| 1018 | |
| 1019 | Ok(()) |
| 1020 | } |
| 1021 | |
| 1022 | #[pyfunction] |
| 1023 | fn repr(obj: PyObjectRef, vm: &VirtualMachine) -> PyResult<PyStrRef> { |