summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Davison <davison@stats.ox.ac.uk>2010-10-14 21:05:02 +0100
committerDan Davison <davison@stats.ox.ac.uk>2010-10-21 13:05:58 +0100
commit24a5f8b4e524b40d3ec32f9d3859ebaf7abac140 (patch)
tree511bf6a47df933bc6b8d4b864248e56d999298d7
parent1bc914cd7aace0b81abcdde0b8fe74a28eae5c02 (diff)
downloadorg-mode-24a5f8b4e524b40d3ec32f9d3859ebaf7abac140.tar.gz
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.
-rw-r--r--lisp/ob-python.el35
1 files changed, 18 insertions, 17 deletions
diff --git a/lisp/ob-python.el b/lisp/ob-python.el
index c056cb6..2b23c34 100644
--- a/lisp/ob-python.el
+++ b/lisp/ob-python.el
@@ -50,16 +50,15 @@
(defvar org-src-preserve-indentation)
(defun org-babel-expand-body:python (body params &optional processed-params)
"Expand BODY according to PARAMS, return the expanded body."
- (concat
- (mapconcat ;; define any variables
- (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))) "\n")
- "\n"
- (org-babel-trim body (if org-src-preserve-indentation "[\f\n\r\v]"))
- "\n"))
+ (let ((var-lines
+ (org-babel-python-variable-assignments params processed-params)))
+ (mapconcat
+ #'identity
+ (append
+ (org-babel-python-variable-assignments params processed-params)
+ (list
+ (org-babel-trim body (if org-src-preserve-indentation "[\f\n\r\v]"))))
+ "\n")))
(defun org-babel-execute:python (body params)
"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)
"Prepare SESSION according to the header arguments in PARAMS."
(let* ((session (org-babel-python-initiate-session session))
- (vars (org-babel-ref-variables params))
- (var-lines (mapcar ;; define any variables
- (lambda (pair)
- (format "%s=%s"
- (car pair)
- (org-babel-python-var-to-python (cdr pair))))
- vars)))
+ (var-lines (org-babel-python-variable-assignments params)))
(org-babel-comint-in-buffer session
(mapc (lambda (var)
(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
+(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)
"Convert an elisp value to a python variable.
Convert an elisp value, VAR, into a string of python source code