I doubt it is Python specific, and I don't know why it would work in some places and not others. For me, the two character name does not work in elisp, but 1 or 3 does. I agree that seems buggy. The origin of the problem is here: #+BEGIN_SRC emacs-lisp (list (string-match (org-babel-noweb-wrap) "<>") (string-match (org-babel-noweb-wrap) "<>") (string-match (org-babel-noweb-wrap) "<>")) #+END_SRC #+RESULTS: | 0 | nil | 0 | my regex fu is not adequate to identify the problem: #+BEGIN_SRC emacs-lisp (org-babel-noweb-wrap) #+END_SRC #+RESULTS: : <<\([^ : ].+?[^ ]\|[^ : ]\)>> That function is used in org-babel-expand-noweb-references. It is somewhat luck that I found that, I was tracing org-babel-expand-noweb-references to see where it was failing, and walked through that line to see it failed on "Ah", and worked on longer names. John ----------------------------------- Professor John Kitchin Doherty Hall A207F Department of Chemical Engineering Carnegie Mellon University Pittsburgh, PA 15213 412-268-7803 @johnkitchin http://kitchingroup.cheme.cmu.edu On Mon, Feb 4, 2019 at 8:40 AM Emmanuel Charpentier wrote: > 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 Charpentier > > John > > ----------------------------------- > Professor John Kitchin > Doherty Hall A207F > Department of Chemical Engineering > Carnegie Mellon University > Pittsburgh, PA 15213 > 412-268-7803 > @johnkitchin > http://kitchingroup.cheme.cmu.edu > > > > On 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) <>) > │ 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): > │ <> > │ 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): > │ <> > │ L > │ #+end_src > └──── > > ┌──── > │ L.append(i) > └──── > > ┌──── > │ ## Python version > │ L=[] > │ for i in range(1,6): > │ <> > │ 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): > │ ... <> > │ File "", line 2 > │ <> > │ ^ > │ 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 > >