mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2024-09-29 23:17:49 +00:00
babel: python: Fix variable assignments made by `org-babel-prep-session:python'
* ob-python.el (org-babel-expand-body:python): Refactor: break variable assignment part out into a separate function (org-babel-python-variable-assignments): New function constructing list of variable assignment statements (org-babel-prep-session:python): Use new function `org-babel-python-variable-assignments' instead of previous (incorrect) variable assignment code.
This commit is contained in:
parent
1bc914cd7a
commit
24a5f8b4e5
|
@ -50,16 +50,15 @@
|
||||||
(defvar org-src-preserve-indentation)
|
(defvar org-src-preserve-indentation)
|
||||||
(defun org-babel-expand-body:python (body params &optional processed-params)
|
(defun org-babel-expand-body:python (body params &optional processed-params)
|
||||||
"Expand BODY according to PARAMS, return the expanded body."
|
"Expand BODY according to PARAMS, return the expanded body."
|
||||||
(concat
|
(let ((var-lines
|
||||||
(mapconcat ;; define any variables
|
(org-babel-python-variable-assignments params processed-params)))
|
||||||
(lambda (pair)
|
(mapconcat
|
||||||
(format "%s=%s"
|
#'identity
|
||||||
(car pair)
|
(append
|
||||||
(org-babel-python-var-to-python (cdr pair))))
|
(org-babel-python-variable-assignments params processed-params)
|
||||||
(nth 1 (or processed-params (org-babel-process-params params))) "\n")
|
(list
|
||||||
"\n"
|
(org-babel-trim body (if org-src-preserve-indentation "[\f\n\r\v]"))))
|
||||||
(org-babel-trim body (if org-src-preserve-indentation "[\f\n\r\v]"))
|
"\n")))
|
||||||
"\n"))
|
|
||||||
|
|
||||||
(defun org-babel-execute:python (body params)
|
(defun org-babel-execute:python (body params)
|
||||||
"Execute a block of Python code with Babel.
|
"Execute a block of Python code with Babel.
|
||||||
|
@ -83,13 +82,7 @@ This function is called by `org-babel-execute-src-block'."
|
||||||
(defun org-babel-prep-session:python (session params)
|
(defun org-babel-prep-session:python (session params)
|
||||||
"Prepare SESSION according to the header arguments in PARAMS."
|
"Prepare SESSION according to the header arguments in PARAMS."
|
||||||
(let* ((session (org-babel-python-initiate-session session))
|
(let* ((session (org-babel-python-initiate-session session))
|
||||||
(vars (org-babel-ref-variables params))
|
(var-lines (org-babel-python-variable-assignments params)))
|
||||||
(var-lines (mapcar ;; define any variables
|
|
||||||
(lambda (pair)
|
|
||||||
(format "%s=%s"
|
|
||||||
(car pair)
|
|
||||||
(org-babel-python-var-to-python (cdr pair))))
|
|
||||||
vars)))
|
|
||||||
(org-babel-comint-in-buffer session
|
(org-babel-comint-in-buffer session
|
||||||
(mapc (lambda (var)
|
(mapc (lambda (var)
|
||||||
(end-of-line 1) (insert var) (comint-send-input)
|
(end-of-line 1) (insert var) (comint-send-input)
|
||||||
|
@ -107,6 +100,14 @@ This function is called by `org-babel-execute-src-block'."
|
||||||
|
|
||||||
;; helper functions
|
;; helper functions
|
||||||
|
|
||||||
|
(defun org-babel-python-variable-assignments (params &optional processed-params)
|
||||||
|
(mapcar
|
||||||
|
(lambda (pair)
|
||||||
|
(format "%s=%s"
|
||||||
|
(car pair)
|
||||||
|
(org-babel-python-var-to-python (cdr pair))))
|
||||||
|
(nth 1 (or processed-params (org-babel-process-params params)))))
|
||||||
|
|
||||||
(defun org-babel-python-var-to-python (var)
|
(defun org-babel-python-var-to-python (var)
|
||||||
"Convert an elisp value to a python variable.
|
"Convert an elisp value to a python variable.
|
||||||
Convert an elisp value, VAR, into a string of python source code
|
Convert an elisp value, VAR, into a string of python source code
|
||||||
|
|
Loading…
Reference in a new issue