GNU bug report logs - #50057
27.2; Issue evaluating Python code across machines

Previous Next

Package: emacs;

Reported by: Augusto Stoffel <arstoffel <at> gmail.com>

Date: Sat, 14 Aug 2021 16:02:02 UTC

Severity: normal

Found in version 27.2

Fixed in version 28.1

Done: Lars Ingebrigtsen <larsi <at> gnus.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Augusto Stoffel <arstoffel <at> gmail.com>
To: 50057 <at> debbugs.gnu.org
Subject: bug#50057: 27.2; Issue evaluating Python code across machines
Date: Sat, 14 Aug 2021 18:01:28 +0200
[Message part 1 (text/plain, inline)]
Suppose the current buffer is editing a local file and you would like to
evaluate some code on a Python inferior running in a remote machine.
The following should work:

(let ((default-directory "/ssh:some-remote-machine:/"))
  (run-python))

(python-shell-send-string "5+5")

(python-shell-send-string "(5\n+5)")

The first python-shell-send-string call indeed works.  The second one
produces an error, because a temporary file is created in the local
machine instead of the remote one.  The same kind of error happens if
one tries to evaluate the region on the entire buffer.

I've attached a small patch to fix this.

[0001-Allow-evaluating-Python-code-across-machines.patch (text/x-patch, inline)]
From b3f47f99da7b8ac2221b6bbafc85ae8076f92703 Mon Sep 17 00:00:00 2001
From: Augusto Stoffel <arstoffel <at> gmail.com>
Date: Sat, 14 Aug 2021 17:48:45 +0200
Subject: [PATCH] Allow evaluating Python code across machines

* python.el (python-shell-send-string): Ensure that the temporary file
is created in the host running the Python process.
---
 lisp/progmodes/python.el | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 2557704e40..20299c20d2 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -3085,7 +3085,8 @@ python-shell-send-string
    (list (read-string "Python command: ") nil t))
   (let ((process (or process (python-shell-get-process-or-error msg))))
     (if (string-match ".\n+." string)   ;Multiline.
-        (let* ((temp-file-name (python-shell--save-temp-file string))
+        (let* ((temp-file-name (with-current-buffer (process-buffer process)
+                                 (python-shell--save-temp-file string)))
                (file-name (or (buffer-file-name) temp-file-name)))
           (python-shell-send-file file-name process temp-file-name t))
       (comint-send-string process string)
-- 
2.31.1


This bug report was last modified 3 years and 279 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.