[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Bug: org-babel python with :results value sends function definition
From: |
Philip Blagoveschensky |
Subject: |
Re: Bug: org-babel python with :results value sends function definition with a statement after a for loop to the shell incorrectly [9.3.6 (9.3.6-elpa @ /home/username/.emacs.d/elpa/org-9.3.6/)] |
Date: |
Mon, 6 Jul 2020 22:18:31 +0300 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 |
Hi Ian,
>Do you have the same issue if you aren't using a session?
If I run the following code block (this time I am using python 3, so
there are parens in the print line)
#+begin_src python
def foobar():
for i in range(5):
pass
print("hello world")
return 3
return foobar()
#+end_src
I get
#+RESULTS:
: 3
so I know it worked fine.
But if I add session like this:
#+begin_src python :session bug_report
def foobar():
for i in range(5):
pass
print("hello world")
return 3
return foobar()
#+end_src
then in *bug_report* I get
>>> def foobar():
... for i in range(5):
... pass
...
>>> print("hello world")
File "<stdin>", line 1
print("hello world")
^
IndentationError: unexpected indent
return 3
>>>
File "<stdin>", line 1
return 3
^
IndentationError: unexpected indent
>>> return foobar()
>>>
File "<stdin>", line 1
SyntaxError: 'return' outside function
>>> open('/tmp/babel-D0mRnD/python-CJ6UtT', 'w').write(str(_))
>>>
20
>>>
>>> 'org_babel_python_eoe'
>>> 'org_babel_python_eoe'
>>>
>Are you using tabs or spaces?
I used spaces. 4 spaces per indentation level, to be exact.
Also, FYI, as it might be relevant information, the shell buffer
contents I posted above happen if the session has been created
previously. If, instead, this is the first time I run some code in this
session, then I also get another error - NameError (see below). Below
you can see the contents of *bug_report* buffer if I run this code cell
in a not-yet-existing session.
def foobar():
Python 3.8.2 | packaged by conda-forge | (default, Mar 5 2020, 17:11:00)
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> ... for i in range(5):
... pass
...
>>> print("hello world")
File "<stdin>", line 1
print("hello world")
^
IndentationError: unexpected indent return 3
>>>
File "<stdin>", line 1
return 3
^
IndentationError: unexpected indent
>>> return foobar()
>>>
File "<stdin>", line 1
SyntaxError: 'return' outside function
>>> open('/tmp/babel-D0mRnD/python-MsDjEk', 'w').write(str(_))
>>>
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name '_' is not defined
>>>
>>> 'org_babel_python_eoe'
>>> 'org_babel_python_eoe'
>>>
If you have a suggestion on how to debug this, feel free to tell.