From: "Adrian Kummerländer" <adrian.kummerlaender@student.kit.edu> To: <emacs-orgmode@gnu.org> Subject: [PATCH] ob-python: Rename exec tmpfile handle to prevent conflict Date: Tue, 6 Oct 2020 23:44:00 +0200 [thread overview] Message-ID: <87mu0zav33.fsf@student.kit.edu> (raw) [-- Attachment #1: Type: text/plain, Size: 416 bytes --] Hello, I noticed that after updating to Org 9.4 many of my Python-based Org files fail to execute with various `io.TextIOWrapper' related error messages. The reason for this is that opening the exec tmpfile as `f' shadows this possibly user-defined variable. The attached patch fixes this problem for me. As this is my first time contributing to Org I am especially open for any suggestions! Best wishes, Adrian [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: ob-python: Rename exec tmpfile handle to prevent conflict --] [-- Type: text/x-patch, Size: 2739 bytes --] From 239aa9aaa8da0f98719469abdff46ecb7a3994ba Mon Sep 17 00:00:00 2001 From: Adrian Kummerlaender <adrian@kummerlaender.eu> Date: Tue, 6 Oct 2020 23:06:08 +0200 Subject: [PATCH] ob-python: Rename exec tmpfile handle to prevent conflict * lisp/ob-python.el (org-babel-python--exec-tmpfile): Rename tmpfile handle (org-babel-python-format-session-value): Rename tmpfile handle Opening the exec tmpfile as a `f' variable shadows any such variable that might by defined by the Python session context. e.g. my Org babel files commonly pass single letter variables inside a session which is broken by this behavior. The new name `__org_babel_python_tmpfile' is in line with other org mode specific Python variables set by ob-python. This is unlikely to conflict with the user's Python code. --- lisp/ob-python.el | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lisp/ob-python.el b/lisp/ob-python.el index 785b9191b..6752adc17 100644 --- a/lisp/ob-python.el +++ b/lisp/ob-python.el @@ -244,8 +244,8 @@ def main(): open('%s', 'w').write( pprint.pformat(main()) )") (defconst org-babel-python--exec-tmpfile "\ -with open('%s') as f: - exec(compile(f.read(), f.name, 'exec'))" +with open('%s') as __org_babel_python_tmpfile: + exec(compile(__org_babel_python_tmpfile.read(), __org_babel_python_tmpfile.name, 'exec'))" "Template for Python session command with output results. Has a single %s escape, the tempfile containing the source code @@ -256,20 +256,20 @@ to evaluate.") "Return Python code to evaluate SRC-FILE and write result to RESULT-FILE." (format "\ import ast -with open('%s') as f: - __org_babel_python_ast = ast.parse(f.read()) +with open('%s') as __org_babel_python_tmpfile: + __org_babel_python_ast = ast.parse(__org_babel_python_tmpfile.read()) __org_babel_python_final = __org_babel_python_ast.body[-1] if isinstance(__org_babel_python_final, ast.Expr): __org_babel_python_ast.body = __org_babel_python_ast.body[:-1] exec(compile(__org_babel_python_ast, '<string>', 'exec')) __org_babel_python_final = eval(compile(ast.Expression( __org_babel_python_final.value), '<string>', 'eval')) - with open('%s', 'w') as f: + with open('%s', 'w') as __org_babel_python_tmpfile: if %s: import pprint - f.write(pprint.pformat(__org_babel_python_final)) + __org_babel_python_tmpfile.write(pprint.pformat(__org_babel_python_final)) else: - f.write(str(__org_babel_python_final)) + __org_babel_python_tmpfile.write(str(__org_babel_python_final)) else: exec(compile(__org_babel_python_ast, '<string>', 'exec')) __org_babel_python_final = None" -- 2.25.4
next reply other threads:[~2020-10-07 13:04 UTC|newest] Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-10-06 21:44 Adrian Kummerländer [this message] 2020-10-07 6:27 Adrian Kummerländer 2020-10-10 23:10 ` Jack Kamm 2020-10-24 11:53 ` Bastien 2020-10-24 14:06 ` Jack Kamm 2020-10-24 14:50 ` Bastien 2020-10-25 13:25 ` stardiviner
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style List information: https://www.orgmode.org/ * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=87mu0zav33.fsf@student.kit.edu \ --to=adrian.kummerlaender@student.kit.edu \ --cc=emacs-orgmode@gnu.org \ --subject='Re: [PATCH] ob-python: Rename exec tmpfile handle to prevent conflict' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Code repositories for project(s) associated with this inbox: https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).