unofficial mirror of emacs-orgmode@gnu.org
 help / color / mirror / Atom feed
* 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/)]
@ 2020-06-30 11:09 Philip Blagoveschensky
  2020-07-06 12:57 ` ian martins
  0 siblings, 1 reply; 9+ messages in thread
From: Philip Blagoveschensky @ 2020-06-30 11:09 UTC (permalink / raw)
  To: emacs-orgmode

Consider the following org-babel block:



#+begin_src python :session bug_report
def foobar():
     for i in range(5):
         pass
     print "hello world"

foobar()
#+end_src



When I run it, this is what I see in the *bug_report* buffer:



def foobar():
...     for i in range(5):
...         pass
...
 >>>     print "hello world"
   File "<stdin>", line 1
     print "hello world"
     ^
IndentationError: unexpected indent

 >>> foobar()
 >>>
 >>> open('/tmp/babel-MOOCF9/python-UW5PEF', 'w').write(str(_))
 >>>
 >>>
 >>> 'org_babel_python_eoe'
 >>> 'org_babel_python_eoe'
 >>>



So, org-babel incorrectly decided that the line with the print is not a 
part of the function's definition and sent it to Python shell as a 
separate statement. Instead, it should've sent it as a part of foobar's 
definition.

This problem persists
- If I use python3 instead of python2
- If I replace
     print "hello world"
   with
     return 42

This problem disappears if I add :results output to the source block.


Emacs  : GNU Emacs 26.1 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.5)
  of 2019-09-23, modified by Debian
Package: Org mode version 9.3.6 (9.3.6-elpa @ 
/home/username/.emacs.d/elpa/org-9.3.6/)


current state:
==============
(setq
  org-src-mode-hook '(org-src-babel-configure-edit-buffer
		     org-src-mode-configure-edit-buffer)
  org-link-shell-confirm-function 'yes-or-no-p
  org-metadown-hook '(org-babel-pop-to-session-maybe)
  org-clock-out-hook '(org-clock-remove-empty-clock-drawer)
  org-mode-hook '(#[0 "\300\301\302\303\304$\207"
		   [add-hook change-major-mode-hook org-show-all append
		    local]
		   5]
		 #[0 "\300\301\302\303\304$\207"
		   [add-hook change-major-mode-hook
		    org-babel-show-result-all append local]
		   5]
		 org-babel-result-hide-spec org-babel-hide-all-hashes)
  org-archive-hook '(org-attach-archive-delete-maybe)
  org-confirm-elisp-link-function 'yes-or-no-p
  org-agenda-before-write-hook '(org-agenda-add-entry-text)
  org-metaup-hook '(org-babel-load-in-session-maybe)
  org-bibtex-headline-format-function #[257 "\300\x01\236A\207" [:title] 3 
"\n\n(fn ENTRY)"]
  org-babel-pre-tangle-hook '(save-buffer)
  org-tab-first-hook '(org-babel-hide-result-toggle-maybe
		      org-babel-header-arg-expand)
  org-babel-load-languages '((emacs-lisp . t) (python . t))
  org-occur-hook '(org-first-headline-recenter)
  org-cycle-hook '(org-cycle-hide-archived-subtrees
		  org-cycle-show-empty-lines
		  org-optimize-window-after-visibility-change)
  org-speed-command-hook '(org-speed-command-activate
			  org-babel-speed-command-activate)
  org-babel-tangle-lang-exts '(("python" . "py") ("emacs-lisp" . "el")
			      ("elisp" . "el"))
  org-confirm-shell-link-function 'yes-or-no-p
  org-link-parameters '(("attachment" :follow org-attach-open-link :export
			org-attach-export-link :complete
			org-attach-complete-link)
		       ("id" :follow org-id-open)
		       ("eww" :follow eww :store org-eww-store-link)
		       ("rmail" :follow org-rmail-open :store
			org-rmail-store-link)
		       ("mhe" :follow org-mhe-open :store
			org-mhe-store-link)
		       ("irc" :follow org-irc-visit :store
			org-irc-store-link :export org-irc-export)
		       ("info" :follow org-info-open :export
			org-info-export :store org-info-store-link)
		       ("gnus" :follow org-gnus-open :store
			org-gnus-store-link)
		       ("docview" :follow org-docview-open :export
			org-docview-export :store org-docview-store-link)
		       ("bibtex" :follow org-bibtex-open :store
			org-bibtex-store-link)
		       ("bbdb" :follow org-bbdb-open :export
			org-bbdb-export :complete org-bbdb-complete-link
			:store org-bbdb-store-link)
		       ("w3m" :store org-w3m-store-link) ("file+sys")
		       ("file+emacs")
		       ("shell" :follow org-link--open-shell)
		       ("news" :follow
			#[257 "\301\300\302\x03Q!\207"
			  ["news" browse-url ":"] 5 "\n\n(fn URL)"]
			)
		       ("mailto" :follow
			#[257 "\301\300\302\x03Q!\207"
			  ["mailto" browse-url ":"] 5 "\n\n(fn URL)"]
			)
		       ("https" :follow
			#[257 "\301\300\302\x03Q!\207"
			  ["https" browse-url ":"] 5 "\n\n(fn URL)"]
			)
		       ("http" :follow
			#[257 "\301\300\302\x03Q!\207"
			  ["http" browse-url ":"] 5 "\n\n(fn URL)"]
			)
		       ("ftp" :follow
			#[257 "\301\300\302\x03Q!\207"
			  ["ftp" browse-url ":"] 5 "\n\n(fn URL)"]
			)
		       ("help" :follow org-link--open-help)
		       ("file" :complete org-link-complete-file)
		       ("elisp" :follow org-link--open-elisp)
		       ("doi" :follow org-link--open-doi))
  org-link-elisp-confirm-function 'yes-or-no-p
  )



^ permalink raw reply	[flat|nested] 9+ messages in thread

* 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/)]
  2020-06-30 11:09 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/)] Philip Blagoveschensky
@ 2020-07-06 12:57 ` ian martins
  2020-07-06 19:18   ` Philip Blagoveschensky
  0 siblings, 1 reply; 9+ messages in thread
From: ian martins @ 2020-07-06 12:57 UTC (permalink / raw)
  To: Philip Blagoveschensky; +Cc: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 6304 bytes --]

Hello Philip,

I tested again and still can't reproduce the issue.  ob-python doesn't
change the indentation between individual lines of a code block, so this is
strange. Do you have the same issue if you aren't using a session? Are you
using tabs or spaces? (I tested with spaces)

On Sun, Jul 5, 2020 at 7:37 AM Philip Blagoveschensky <philip@crabman.me>
wrote:

> Consider the following org-babel block:
>
>
>
> #+begin_src python :session bug_report
> def foobar():
>      for i in range(5):
>          pass
>      print "hello world"
>
> foobar()
> #+end_src
>
>
>
> When I run it, this is what I see in the *bug_report* buffer:
>
>
>
> def foobar():
> ...     for i in range(5):
> ...         pass
> ...
>  >>>     print "hello world"
>    File "<stdin>", line 1
>      print "hello world"
>      ^
> IndentationError: unexpected indent
>
>  >>> foobar()
>  >>>
>  >>> open('/tmp/babel-MOOCF9/python-UW5PEF', 'w').write(str(_))
>  >>>
>  >>>
>  >>> 'org_babel_python_eoe'
>  >>> 'org_babel_python_eoe'
>  >>>
>
>
>
> So, org-babel incorrectly decided that the line with the print is not a
> part of the function's definition and sent it to Python shell as a
> separate statement. Instead, it should've sent it as a part of foobar's
> definition.
>
> This problem persists
> - If I use python3 instead of python2
> - If I replace
>      print "hello world"
>    with
>      return 42
>
> This problem disappears if I add :results output to the source block.
>
>
> Emacs  : GNU Emacs 26.1 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.5)
>   of 2019-09-23, modified by Debian
> Package: Org mode version 9.3.6 (9.3.6-elpa @
> /home/username/.emacs.d/elpa/org-9.3.6/)
>
>
> current state:
> ==============
> (setq
>   org-src-mode-hook '(org-src-babel-configure-edit-buffer
>                      org-src-mode-configure-edit-buffer)
>   org-link-shell-confirm-function 'yes-or-no-p
>   org-metadown-hook '(org-babel-pop-to-session-maybe)
>   org-clock-out-hook '(org-clock-remove-empty-clock-drawer)
>   org-mode-hook '(#[0 "\300\301\302\303\304$\207"
>                    [add-hook change-major-mode-hook org-show-all append
>                     local]
>                    5]
>                  #[0 "\300\301\302\303\304$\207"
>                    [add-hook change-major-mode-hook
>                     org-babel-show-result-all append local]
>                    5]
>                  org-babel-result-hide-spec org-babel-hide-all-hashes)
>   org-archive-hook '(org-attach-archive-delete-maybe)
>   org-confirm-elisp-link-function 'yes-or-no-p
>   org-agenda-before-write-hook '(org-agenda-add-entry-text)
>   org-metaup-hook '(org-babel-load-in-session-maybe)
>   org-bibtex-headline-format-function #[257 "\300 \236A\207" [:title] 3
> "\n\n(fn ENTRY)"]
>   org-babel-pre-tangle-hook '(save-buffer)
>   org-tab-first-hook '(org-babel-hide-result-toggle-maybe
>                       org-babel-header-arg-expand)
>   org-babel-load-languages '((emacs-lisp . t) (python . t))
>   org-occur-hook '(org-first-headline-recenter)
>   org-cycle-hook '(org-cycle-hide-archived-subtrees
>                   org-cycle-show-empty-lines
>                   org-optimize-window-after-visibility-change)
>   org-speed-command-hook '(org-speed-command-activate
>                           org-babel-speed-command-activate)
>   org-babel-tangle-lang-exts '(("python" . "py") ("emacs-lisp" . "el")
>                               ("elisp" . "el"))
>   org-confirm-shell-link-function 'yes-or-no-p
>   org-link-parameters '(("attachment" :follow org-attach-open-link :export
>                         org-attach-export-link :complete
>                         org-attach-complete-link)
>                        ("id" :follow org-id-open)
>                        ("eww" :follow eww :store org-eww-store-link)
>                        ("rmail" :follow org-rmail-open :store
>                         org-rmail-store-link)
>                        ("mhe" :follow org-mhe-open :store
>                         org-mhe-store-link)
>                        ("irc" :follow org-irc-visit :store
>                         org-irc-store-link :export org-irc-export)
>                        ("info" :follow org-info-open :export
>                         org-info-export :store org-info-store-link)
>                        ("gnus" :follow org-gnus-open :store
>                         org-gnus-store-link)
>                        ("docview" :follow org-docview-open :export
>                         org-docview-export :store org-docview-store-link)
>                        ("bibtex" :follow org-bibtex-open :store
>                         org-bibtex-store-link)
>                        ("bbdb" :follow org-bbdb-open :export
>                         org-bbdb-export :complete org-bbdb-complete-link
>                         :store org-bbdb-store-link)
>                        ("w3m" :store org-w3m-store-link) ("file+sys")
>                        ("file+emacs")
>                        ("shell" :follow org-link--open-shell)
>                        ("news" :follow
>                         #[257 "\301\300\302 Q!\207"
>                           ["news" browse-url ":"] 5 "\n\n(fn URL)"]
>                         )
>                        ("mailto" :follow
>                         #[257 "\301\300\302 Q!\207"
>                           ["mailto" browse-url ":"] 5 "\n\n(fn URL)"]
>                         )
>                        ("https" :follow
>                         #[257 "\301\300\302 Q!\207"
>                           ["https" browse-url ":"] 5 "\n\n(fn URL)"]
>                         )
>                        ("http" :follow
>                         #[257 "\301\300\302 Q!\207"
>                           ["http" browse-url ":"] 5 "\n\n(fn URL)"]
>                         )
>                        ("ftp" :follow
>                         #[257 "\301\300\302 Q!\207"
>                           ["ftp" browse-url ":"] 5 "\n\n(fn URL)"]
>                         )
>                        ("help" :follow org-link--open-help)
>                        ("file" :complete org-link-complete-file)
>                        ("elisp" :follow org-link--open-elisp)
>                        ("doi" :follow org-link--open-doi))
>   org-link-elisp-confirm-function 'yes-or-no-p
>   )
>
>
>

[-- Attachment #2: Type: text/html, Size: 8702 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* 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/)]
  2020-07-06 12:57 ` ian martins
@ 2020-07-06 19:18   ` Philip Blagoveschensky
  2020-07-07 11:31     ` ian martins
  0 siblings, 1 reply; 9+ messages in thread
From: Philip Blagoveschensky @ 2020-07-06 19:18 UTC (permalink / raw)
  To: ian martins; +Cc: emacs-orgmode

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.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* 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/)]
  2020-07-06 19:18   ` Philip Blagoveschensky
@ 2020-07-07 11:31     ` ian martins
  2020-07-19 15:33       ` Jack Kamm
  0 siblings, 1 reply; 9+ messages in thread
From: ian martins @ 2020-07-07 11:31 UTC (permalink / raw)
  To: Philip Blagoveschensky; +Cc: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 3356 bytes --]

I was able to reproduce the error. I started emacs without my init file
(emacs -q) and then

,----
| (add-to-list 'load-path "~/code/elisp/org-mode/lisp")
| (require 'ob-python)
| (org-babel-do-load-languages 'org-babel-load-languages `((python . t)))
`----

in scratch, and then ran your test. I got the same errors you described. I
redid the test but loaded the lastest org-mode and there was no error. This
means you probably don't need to debug this. It has been fixed in the
latest version, but the fix hasn't been updated in the elpa package yet.
you can either wait for the next release or pull the latest code from the
repo.

On Mon, Jul 6, 2020 at 3:18 PM Philip Blagoveschensky <philip@crabman.me>
wrote:

> 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.
>

[-- Attachment #2: Type: text/html, Size: 4724 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* 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/)]
  2020-07-07 11:31     ` ian martins
@ 2020-07-19 15:33       ` Jack Kamm
  2020-10-10 23:57         ` Jack Kamm
  0 siblings, 1 reply; 9+ messages in thread
From: Jack Kamm @ 2020-07-19 15:33 UTC (permalink / raw)
  To: ian martins, Philip Blagoveschensky; +Cc: emacs-orgmode

> I redid the test but loaded the lastest org-mode and there was no
> error. This means you probably don't need to debug this. It has been
> fixed in the latest version, but the fix hasn't been updated in the
> elpa package yet.  you can either wait for the next release or pull
> the latest code from the repo.

Thanks for checking this Ian, I believe that this issue would have been
fixed by this patch:

https://orgmode.org/list/87pnfdo88v.fsf@gmail.com/

But I've been too swamped to check.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* 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/)]
  2020-07-19 15:33       ` Jack Kamm
@ 2020-10-10 23:57         ` Jack Kamm
  0 siblings, 0 replies; 9+ messages in thread
From: Jack Kamm @ 2020-10-10 23:57 UTC (permalink / raw)
  To: ian martins, Philip Blagoveschensky; +Cc: emacs-orgmode

Checking back in on this since Org 9.4 has been released. This issue
should be fixed now, and my tests corroborate this. If you're still
experiencing this problem after updating, please let me know.

Best,
Jack

Jack Kamm <jackkamm@gmail.com> writes:

>> I redid the test but loaded the lastest org-mode and there was no
>> error. This means you probably don't need to debug this. It has been
>> fixed in the latest version, but the fix hasn't been updated in the
>> elpa package yet.  you can either wait for the next release or pull
>> the latest code from the repo.
>
> Thanks for checking this Ian, I believe that this issue would have been
> fixed by this patch:
>
> https://orgmode.org/list/87pnfdo88v.fsf@gmail.com/
>
> But I've been too swamped to check.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* 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/)]
  2020-07-01 16:55 Philip Blagoveschensky
  2020-07-01 18:48 ` Andreas Röhler
@ 2020-07-01 19:05 ` ian martins
  1 sibling, 0 replies; 9+ messages in thread
From: ian martins @ 2020-07-01 19:05 UTC (permalink / raw)
  To: Philip Blagoveschensky; +Cc: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 6358 bytes --]

your example works for me without any changes. "return 42" works as well.
it returns None and there are no errors in the *bug_report* buffer.

I'm using:
GNU Emacs 25.2.2 (x86_64-pc-linux-gnu, GTK+ Version 3.22.21) of 2017-09-22,
modified by Debian
Org mode version 9.3.6 (release_9.3.6-739-g0c1740.dirty @
/home/ian/code/elisp/org-mode/lisp/)

On Wed, Jul 1, 2020 at 12:57 PM Philip Blagoveschensky <philip@crabman.me>
wrote:

> Consider the following org-babel block:
>
>
>
> #+begin_src python :session bug_report
> def foobar():
>      for i in range(5):
>          pass
>      print "hello world"
>
> foobar()
> #+end_src
>
>
>
> When I run it, this is what I see in the *bug_report* buffer:
>
>
>
> def foobar():
> ...     for i in range(5):
> ...         pass
> ...
> >>>     print "hello world"
>    File "<stdin>", line 1
>      print "hello world"
>      ^
> IndentationError: unexpected indent
>
> >>> foobar()
> >>>
> >>> open('/tmp/babel-MOOCF9/python-UW5PEF', 'w').write(str(_))
> >>>
> >>>
> >>> 'org_babel_python_eoe'
> >>> 'org_babel_python_eoe'
> >>>
>
>
>
> So, org-babel incorrectly decided that the line with the print is not a
> part of the function's definition and sent it to Python shell as a
> separate statement. Instead, it should've sent it as a part of foobar's
> definition.
>
> This problem persists
> - If I use python3 instead of python2
> - If I replace
>      print "hello world"
>    with
>      return 42
>
> This problem disappears if I add :results output to the source block.
>
>
> Emacs  : GNU Emacs 26.1 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.5)
>   of 2019-09-23, modified by Debian
> Package: Org mode version 9.3.6 (9.3.6-elpa @
> /home/username/.emacs.d/elpa/org-9.3.6/)
>
>
> current state:
> ==============
> (setq
>   org-src-mode-hook '(org-src-babel-configure-edit-buffer
>                      org-src-mode-configure-edit-buffer)
>   org-link-shell-confirm-function 'yes-or-no-p
>   org-metadown-hook '(org-babel-pop-to-session-maybe)
>   org-clock-out-hook '(org-clock-remove-empty-clock-drawer)
>   org-mode-hook '(#[0 "\300\301\302\303\304$\207"
>                    [add-hook change-major-mode-hook org-show-all append
>                     local]
>                    5]
>                  #[0 "\300\301\302\303\304$\207"
>                    [add-hook change-major-mode-hook
>                     org-babel-show-result-all append local]
>                    5]
>                  org-babel-result-hide-spec org-babel-hide-all-hashes)
>   org-archive-hook '(org-attach-archive-delete-maybe)
>   org-confirm-elisp-link-function 'yes-or-no-p
>   org-agenda-before-write-hook '(org-agenda-add-entry-text)
>   org-metaup-hook '(org-babel-load-in-session-maybe)
>   org-bibtex-headline-format-function #[257 "\300 \236A\207" [:title] 3
> "\n\n(fn ENTRY)"]
>   org-babel-pre-tangle-hook '(save-buffer)
>   org-tab-first-hook '(org-babel-hide-result-toggle-maybe
>                       org-babel-header-arg-expand)
>   org-babel-load-languages '((emacs-lisp . t) (python . t))
>   org-occur-hook '(org-first-headline-recenter)
>   org-cycle-hook '(org-cycle-hide-archived-subtrees
>                   org-cycle-show-empty-lines
>                   org-optimize-window-after-visibility-change)
>   org-speed-command-hook '(org-speed-command-activate
>                           org-babel-speed-command-activate)
>   org-babel-tangle-lang-exts '(("python" . "py") ("emacs-lisp" . "el")
>                               ("elisp" . "el"))
>   org-confirm-shell-link-function 'yes-or-no-p
>   org-link-parameters '(("attachment" :follow org-attach-open-link :export
>                         org-attach-export-link :complete
>                         org-attach-complete-link)
>                        ("id" :follow org-id-open)
>                        ("eww" :follow eww :store org-eww-store-link)
>                        ("rmail" :follow org-rmail-open :store
>                         org-rmail-store-link)
>                        ("mhe" :follow org-mhe-open :store
>                         org-mhe-store-link)
>                        ("irc" :follow org-irc-visit :store
>                         org-irc-store-link :export org-irc-export)
>                        ("info" :follow org-info-open :export
>                         org-info-export :store org-info-store-link)
>                        ("gnus" :follow org-gnus-open :store
>                         org-gnus-store-link)
>                        ("docview" :follow org-docview-open :export
>                         org-docview-export :store org-docview-store-link)
>                        ("bibtex" :follow org-bibtex-open :store
>                         org-bibtex-store-link)
>                        ("bbdb" :follow org-bbdb-open :export
>                         org-bbdb-export :complete org-bbdb-complete-link
>                         :store org-bbdb-store-link)
>                        ("w3m" :store org-w3m-store-link) ("file+sys")
>                        ("file+emacs")
>                        ("shell" :follow org-link--open-shell)
>                        ("news" :follow
>                         #[257 "\301\300\302 Q!\207"
>                           ["news" browse-url ":"] 5 "\n\n(fn URL)"]
>                         )
>                        ("mailto" :follow
>                         #[257 "\301\300\302 Q!\207"
>                           ["mailto" browse-url ":"] 5 "\n\n(fn URL)"]
>                         )
>                        ("https" :follow
>                         #[257 "\301\300\302 Q!\207"
>                           ["https" browse-url ":"] 5 "\n\n(fn URL)"]
>                         )
>                        ("http" :follow
>                         #[257 "\301\300\302 Q!\207"
>                           ["http" browse-url ":"] 5 "\n\n(fn URL)"]
>                         )
>                        ("ftp" :follow
>                         #[257 "\301\300\302 Q!\207"
>                           ["ftp" browse-url ":"] 5 "\n\n(fn URL)"]
>                         )
>                        ("help" :follow org-link--open-help)
>                        ("file" :complete org-link-complete-file)
>                        ("elisp" :follow org-link--open-elisp)
>                        ("doi" :follow org-link--open-doi))
>   org-link-elisp-confirm-function 'yes-or-no-p
>   )
>
>
>

[-- Attachment #2: Type: text/html, Size: 8787 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* 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/)]
  2020-07-01 16:55 Philip Blagoveschensky
@ 2020-07-01 18:48 ` Andreas Röhler
  2020-07-01 19:05 ` ian martins
  1 sibling, 0 replies; 9+ messages in thread
From: Andreas Röhler @ 2020-07-01 18:48 UTC (permalink / raw)
  To: emacs-orgmode


On 01.07.20 18:55, Philip Blagoveschensky wrote:
> #+begin_src python :session bug_report
> def foobar():
>     for i in range(5):
>         pass
>     print "hello world"
>
> foobar()
> #+end_src 


Works here like this:

#+begin_src python :results output
def foobar():
     for i in range(5):
         pass
     print("hello world")

foobar()
#+end_src

#+RESULTS:
: hello world

GNU Emacs 28.0.50 (build 1, i686-pc-linux-gnu, GTK+ Version 3.14.5, 
cairo version 1.14.0) of 2020-06-10




^ permalink raw reply	[flat|nested] 9+ messages in thread

* 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/)]
@ 2020-07-01 16:55 Philip Blagoveschensky
  2020-07-01 18:48 ` Andreas Röhler
  2020-07-01 19:05 ` ian martins
  0 siblings, 2 replies; 9+ messages in thread
From: Philip Blagoveschensky @ 2020-07-01 16:55 UTC (permalink / raw)
  To: emacs-orgmode

Consider the following org-babel block:



#+begin_src python :session bug_report
def foobar():
     for i in range(5):
         pass
     print "hello world"

foobar()
#+end_src



When I run it, this is what I see in the *bug_report* buffer:



def foobar():
...     for i in range(5):
...         pass
...
>>>     print "hello world"
   File "<stdin>", line 1
     print "hello world"
     ^
IndentationError: unexpected indent

>>> foobar()
>>>
>>> open('/tmp/babel-MOOCF9/python-UW5PEF', 'w').write(str(_))
>>>
>>>
>>> 'org_babel_python_eoe'
>>> 'org_babel_python_eoe'
>>>



So, org-babel incorrectly decided that the line with the print is not a 
part of the function's definition and sent it to Python shell as a 
separate statement. Instead, it should've sent it as a part of foobar's 
definition.

This problem persists
- If I use python3 instead of python2
- If I replace
     print "hello world"
   with
     return 42

This problem disappears if I add :results output to the source block.


Emacs  : GNU Emacs 26.1 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.5)
  of 2019-09-23, modified by Debian
Package: Org mode version 9.3.6 (9.3.6-elpa @ 
/home/username/.emacs.d/elpa/org-9.3.6/)


current state:
==============
(setq
  org-src-mode-hook '(org-src-babel-configure-edit-buffer
		     org-src-mode-configure-edit-buffer)
  org-link-shell-confirm-function 'yes-or-no-p
  org-metadown-hook '(org-babel-pop-to-session-maybe)
  org-clock-out-hook '(org-clock-remove-empty-clock-drawer)
  org-mode-hook '(#[0 "\300\301\302\303\304$\207"
		   [add-hook change-major-mode-hook org-show-all append
		    local]
		   5]
		 #[0 "\300\301\302\303\304$\207"
		   [add-hook change-major-mode-hook
		    org-babel-show-result-all append local]
		   5]
		 org-babel-result-hide-spec org-babel-hide-all-hashes)
  org-archive-hook '(org-attach-archive-delete-maybe)
  org-confirm-elisp-link-function 'yes-or-no-p
  org-agenda-before-write-hook '(org-agenda-add-entry-text)
  org-metaup-hook '(org-babel-load-in-session-maybe)
  org-bibtex-headline-format-function #[257 "\300\x01\236A\207" [:title] 3 
"\n\n(fn ENTRY)"]
  org-babel-pre-tangle-hook '(save-buffer)
  org-tab-first-hook '(org-babel-hide-result-toggle-maybe
		      org-babel-header-arg-expand)
  org-babel-load-languages '((emacs-lisp . t) (python . t))
  org-occur-hook '(org-first-headline-recenter)
  org-cycle-hook '(org-cycle-hide-archived-subtrees
		  org-cycle-show-empty-lines
		  org-optimize-window-after-visibility-change)
  org-speed-command-hook '(org-speed-command-activate
			  org-babel-speed-command-activate)
  org-babel-tangle-lang-exts '(("python" . "py") ("emacs-lisp" . "el")
			      ("elisp" . "el"))
  org-confirm-shell-link-function 'yes-or-no-p
  org-link-parameters '(("attachment" :follow org-attach-open-link :export
			org-attach-export-link :complete
			org-attach-complete-link)
		       ("id" :follow org-id-open)
		       ("eww" :follow eww :store org-eww-store-link)
		       ("rmail" :follow org-rmail-open :store
			org-rmail-store-link)
		       ("mhe" :follow org-mhe-open :store
			org-mhe-store-link)
		       ("irc" :follow org-irc-visit :store
			org-irc-store-link :export org-irc-export)
		       ("info" :follow org-info-open :export
			org-info-export :store org-info-store-link)
		       ("gnus" :follow org-gnus-open :store
			org-gnus-store-link)
		       ("docview" :follow org-docview-open :export
			org-docview-export :store org-docview-store-link)
		       ("bibtex" :follow org-bibtex-open :store
			org-bibtex-store-link)
		       ("bbdb" :follow org-bbdb-open :export
			org-bbdb-export :complete org-bbdb-complete-link
			:store org-bbdb-store-link)
		       ("w3m" :store org-w3m-store-link) ("file+sys")
		       ("file+emacs")
		       ("shell" :follow org-link--open-shell)
		       ("news" :follow
			#[257 "\301\300\302\x03Q!\207"
			  ["news" browse-url ":"] 5 "\n\n(fn URL)"]
			)
		       ("mailto" :follow
			#[257 "\301\300\302\x03Q!\207"
			  ["mailto" browse-url ":"] 5 "\n\n(fn URL)"]
			)
		       ("https" :follow
			#[257 "\301\300\302\x03Q!\207"
			  ["https" browse-url ":"] 5 "\n\n(fn URL)"]
			)
		       ("http" :follow
			#[257 "\301\300\302\x03Q!\207"
			  ["http" browse-url ":"] 5 "\n\n(fn URL)"]
			)
		       ("ftp" :follow
			#[257 "\301\300\302\x03Q!\207"
			  ["ftp" browse-url ":"] 5 "\n\n(fn URL)"]
			)
		       ("help" :follow org-link--open-help)
		       ("file" :complete org-link-complete-file)
		       ("elisp" :follow org-link--open-elisp)
		       ("doi" :follow org-link--open-doi))
  org-link-elisp-confirm-function 'yes-or-no-p
  )



^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2020-10-10 23:57 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-30 11:09 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/)] Philip Blagoveschensky
2020-07-06 12:57 ` ian martins
2020-07-06 19:18   ` Philip Blagoveschensky
2020-07-07 11:31     ` ian martins
2020-07-19 15:33       ` Jack Kamm
2020-10-10 23:57         ` Jack Kamm
2020-07-01 16:55 Philip Blagoveschensky
2020-07-01 18:48 ` Andreas Röhler
2020-07-01 19:05 ` ian martins

unofficial mirror of emacs-orgmode@gnu.org

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://yhetil.org/orgmode/0 orgmode/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 orgmode orgmode/ https://yhetil.org/orgmode \
		emacs-orgmode@gnu.org
	public-inbox-index orgmode

Example config snippet for mirrors.
Newsgroups are available over NNTP:
	nntp://news.yhetil.org/yhetil.emacs.orgmode
	nntp://news.gmane.io/gmane.emacs.orgmode


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git