Le lundi 04 février 2019 à 08:11 -0500, John Kitchin a écrit :The problem may be the name is only two characters long. Try Ahh instead. That works for me.Indeed. Nice catch ; how did you find this ?Since this doesn't happen with emacs-lisp or Sage, and since nothing in the docs I've read so far suggests anything about the length of a block identifier, I consider this a bug in the Python language support code. What do you think ? Any hint ?Thanks a lot !--Emmanuel CharpentierJohn
-----------------------------------
Professor John Kitchin
Doherty Hall A207F
Department of Chemical Engineering
Carnegie Mellon University
Pittsburgh, PA 15213
412-268-7803On Mon, Feb 4, 2019 at 7:00 AM Emmanuel Charpentier <emm.charpentier@free.fr> wrote:Seen in `org-mode' version `9.2'.
Using `noweb' syntax works OK with `emacs-lisp':
┌────
│ #+name: a
│ #+begin_src emacs-lisp
│ (setq L (append L (list i)))
│ #+end_src
│
│ #+name: b
│ #+begin_src emacs-lisp :noweb yes :exports both
│ ;; Lisp version
│ (setq L nil)
│ (dotimes (i 5) <<a>>)
│ L
│ #+end_src
└────
This gives :
┌────
│ (setq L (append L (list i)))
└────
┌────
│ ;; Lisp version
│ (setq L nil)
│ (dotimes (i 5) )
│ L
└────
The `noweb' syntax also works with `Sage' (a symbolic maths oriented
Python derivative):
┌────
│ #+name: Aaarghhh
│ #+begin_src sage
│ L.append(i)
│ #+end_src
│
│ #+name: Berde
│ #+begin_src sage :noweb yes :exports both
│ ## Python version
│ L=[]
│ for i in range(1,6):
│ <<Aaarghhh>>
│ L
│ #+end_src
└────
wich gives :
┌────
│ L.append(i)
└────
┌────
│ ## Sage version
│ L=[]
│ for i in range(1,6):
│
│ L
└────
But using the same syntax in Python fails miserably:
┌────
│ #+name: Ah
│ #+begin_src python
│ L.append(i)
│ #+end_src
│
│ #+name: Beee
│ #+begin_src python :noweb yes :exports both
│ ## Python version
│ L=[]
│ for i in range(1,6):
│ <<Ah>>
│ L
│ #+end_src
└────
┌────
│ L.append(i)
└────
┌────
│ ## Python version
│ L=[]
│ for i in range(1,6):
│ <<Ah>>
│ L
└────
┌────
│ []
└────
It *seems* that the "Ah" block is not expanded.
The code itself should be sound *if* it expanded:
┌────
│ #+name: B0
│ #+begin_src python :exports both
│ L=[]
│ for i in range(1,6):
│ L.append(i)
│ L
│ #+end_src
└────
┌────
│ L=[]
│ for i in range(1,6):
│ L.append(i)
│ L
└────
━━━━━━━━━━━━━━━
1 2 3 4 5
━━━━━━━━━━━━━━━
During the compilation of the source of this mail, the following is
printed in the `*Python*' buffer:
┌────
│ >>> L.append(i)
│ >>>
│ >>> open('/tmp/babel-OJSsxf/python-dVESY4', 'w').write(str(_))
│ >>>
│ >>>
│ >>> 'org_babel_python_eoe'
│ 'org_babel_python_eoe'
│ >>> ## Python version
│ ... L=[]
│ >>> for i in range(1,6):
│ ... <<Ah>>
│ File "<stdin>", line 2
│ <<Ah>>
│ ^
│ SyntaxError: invalid syntax
│ >>>
│ >>> L
│ []
│ >>>
│ >>> open('/tmp/babel-OJSsxf/python-9NR46u', 'w').write(str(_))
│ >>>
│ >>>
│ >>> 'org_babel_python_eoe'
│ 'org_babel_python_eoe'
│ >>> L=[]
│ >>> for i in range(1,6):
│ ... L.append(i)
│ ...
│ >>> L
│ [1, 2, 3, 4, 5]
│ >>>
│ >>> open('/tmp/babel-OJSsxf/python-fW5gK0', 'w').write(str(_))
│ >>>
│ >>>
│ >>> 'org_babel_python_eoe'
│ 'org_babel_python_eoe'
│ >>>
└────
The source code of this mail is attached.
--
Emmanuel Charpentier