ob-lang cannot require org

Generally, ob-lang modules cannot require org, else it gets into
infinite require loop.

This begs the question whether ob-ein is really used by anyone.
This commit is contained in:
dickmao 2019-09-29 12:40:20 -04:00
parent 507eaf4d9a
commit ed4522b787
3 changed files with 49 additions and 28 deletions

View file

@ -37,42 +37,32 @@ env:
matrix: matrix:
include: include:
- os: linux - os: linux
env: EMACS_CI=emacs-25-1 IPYTHON=5.8.0 PY=python INSTALL_USER=" --user" env: EMACS_CI=emacs-25-1 IPYTHON=5.8.0 PY=python PIP="${PY} -m pip install --user"
- os: linux - os: linux
env: EMACS_CI=emacs-26-2 IPYTHON=6.5.0 PY=python3 INSTALL_USER=" --user" env: EMACS_CI=emacs-26-1 IPYTHON=6.5.0 PY=python3 PIP="${PY} -m pip install --user"
- os: linux - os: linux
env: EMACS_CI=emacs-26-3 IPYTHON=7.5.0 PY=python3 INSTALL_USER=" --user" env: EMACS_CI=emacs-26-2 IPYTHON=7.5.0 PY=python3 PIP="${PY} -m pip install --user"
- os: osx - os: osx
language: generic language: generic
env: EVM_EMACS=emacs-25.2 IPYTHON=5.8.0 PY=python TOXENV=py27 INSTALL_USER="" env: EVM_EMACS=emacs-25.2 IPYTHON=5.8.0 PY=python PIP="pip install" TOXENV=py27
allow_failures: allow_failures:
- env: EMACS_CI=emacs-snapshot - env: EMACS_CI=emacs-snapshot
install: install:
- ${PY} -m pip install${INSTALL_USER} --upgrade pip
- ${PY} -m pip install${INSTALL_USER} wheel
- sh tools/install-virtualenv.sh - sh tools/install-virtualenv.sh
- | - |
if [ "x$TRAVIS_OS_NAME" = "xosx" ]; then if [ "x$TRAVIS_OS_NAME" = "xosx" ]; then
eval "$(pyenv init -)" ; eval "$(pyenv init -)" ;
pyenv activate $TOXENV ; pyenv activate $TOXENV ;
else
${PY} -m pip install${INSTALL_USER} jupyterhub ;
sudo /usr/bin/npm install -g configurable-http-proxy ;
${PY} -m pip install${INSTALL_USER} jupyterhub-dummyauthenticator ;
fi fi
- ${PY} -m pip install${INSTALL_USER} jupyter ipython\<=$IPYTHON jedi\<=0.13.3 - ${PIP} --upgrade pip
- ${PY} -m pip install${INSTALL_USER} ipykernel - ${PIP} wheel
- ${PIP} wheel jupyter ipython\<=$IPYTHON jedi\<=0.13.3 ipykernel numpy\<=1.16.0 matplotlib\<=3.0.2
- ${PY} -m ipykernel install --user - ${PY} -m ipykernel install --user
- ${PY} -m pip install${INSTALL_USER} numpy\<=1.16.0
- ${PY} -m pip install${INSTALL_USER} matplotlib\<=3.0.2
- sh tools/install-R.sh - sh tools/install-R.sh
- sh tools/install-julia.sh - sh tools/install-julia.sh
- | - hash -r
if [ "x$TRAVIS_OS_NAME" != "xosx" ]; then
hash -r
fi
- jupyter kernelspec list - jupyter kernelspec list
- curl --version - curl --version
- ipython --version - ipython --version
@ -93,6 +83,9 @@ script:
- make test-install - make test-install
- | - |
if [[ "x$TRAVIS_PYTHON_VERSION" == x3* ]]; then if [[ "x$TRAVIS_PYTHON_VERSION" == x3* ]]; then
${PIP} jupyterhub ;
sudo /usr/bin/npm install -g configurable-http-proxy ;
${PIP} jupyterhub-dummyauthenticator ;
make test-jupyterhub make test-jupyterhub
fi fi
- rm -rf $HOME/.matplotlib $HOME/.cache/fontconfig - rm -rf $HOME/.matplotlib $HOME/.cache/fontconfig

View file

@ -34,10 +34,28 @@
;; Uses code from https://github.com/gregsexton/ob-ipython (MIT License) ;; Uses code from https://github.com/gregsexton/ob-ipython (MIT License)
;;; Code: ;;; Code:
(require 'org-element) (require 'ob)
(require 'ein-utils) (require 'ein-utils)
(require 'ein-notebooklist)
(require 'ein-process) (autoload 'org-element-property "org-element")
(autoload 'org-element-context "org-element")
(autoload 'ein:notebooklist-new-notebook-with-name "ein-notebooklist")
(autoload 'ein:notebooklist-login "ein-notebooklist")
(autoload 'ein:notebook-get-opened-notebook "ein-notebook")
(autoload 'ein:notebook-url "ein-notebook")
(autoload 'ein:notebook-open "ein-notebook")
(autoload 'ein:notebook-close "ein-notebook")
(autoload 'ein:process-url-or-port "ein-process")
(autoload 'ein:process-url-match "ein-process")
(autoload 'ein:process-refresh-processes "ein-process")
(autoload 'ein:jupyter-server-conn-info "ein-jupyter")
(autoload 'ein:jupyter-server-start "ein-jupyter")
(autoload 'ein:connect-buffer-to-notebook "ein-connect")
(autoload 'ein:connect-run-buffer "ein-connect")
(autoload 'ein:shared-output-get-cell "ein-shared-output")
(autoload 'ein:shared-output-eval-string "ein-shared-output")
(autoload 'ein:kernel-live-p "ein-kernel")
(autoload 'ein:query-singleton-ajax "ein:query")
(defvar *ob-ein-sentinel* "[....]" (defvar *ob-ein-sentinel* "[....]"
"Placeholder string replaced after async cell execution") "Placeholder string replaced after async cell execution")
@ -337,7 +355,8 @@ if necessary. Install CALLBACK (i.e., cell execution) upon notebook retrieval."
(ein:aif (ein:process-url-match nbpath) (ein:aif (ein:process-url-match nbpath)
(ein:notebooklist-login (ein:process-url-or-port it) callback-login) (ein:notebooklist-login (ein:process-url-or-port it) callback-login)
(ein:jupyter-server-start (ein:jupyter-server-start
(executable-find ein:jupyter-default-server-command) (executable-find (or (ein:eval-if-bound 'ein:jupyter-default-server-command)
"jupyter"))
(read-directory-name "Notebook directory: " default-directory) (read-directory-name "Notebook directory: " default-directory)
nil nil
callback-login callback-login
@ -362,7 +381,7 @@ if necessary. Install CALLBACK (i.e., cell execution) upon notebook retrieval."
(org-ctrl-c-ctrl-c))))))) (org-ctrl-c-ctrl-c)))))))
(defcustom ob-ein-babel-edit-polymode-ignore nil (defcustom ob-ein-babel-edit-polymode-ignore nil
"When true override default python mode key mapping for `\C-c\C-c' while inside a babel edit buffer. "When false override default python mode key mapping for `\C-c\C-c' while inside a babel edit buffer.
Instead the binding will be to `ob-ein--edit-ctrl-c-ctrl-c', which will execute the code block being edited." Instead the binding will be to `ob-ein--edit-ctrl-c-ctrl-c', which will execute the code block being edited."
:group 'ein :group 'ein
:type '(boolean)) :type '(boolean))

View file

@ -11,19 +11,27 @@ CASKDIR=$WORKDIR/cask
. tools/retry.sh . tools/retry.sh
update_elpa_keys() {
mkdir -p $HOME/.emacs.d/elpa/gnupg || true
chmod 700 $HOME/.emacs.d/elpa/gnupg
GPG=gpg
if which gpg2 ; then GPG=gpg2 ; fi
travis_retry ${GPG} --keyserver hkp://pool.sks-keyservers.net:80 --homedir $HOME/.emacs.d/elpa/gnupg --recv-keys 066DAFCB81E42C40
mkdir -p $(cask package-directory) || true
mkdir -p $HOME/.cask || true
rsync -azSHe ssh $HOME/.cask $(dirname $(dirname $(dirname $(cask package-directory))))
rsync -azSHe ssh $HOME/.emacs.d/elpa/gnupg $(cask package-directory)
}
cask_upgrade_cask_or_reset() { cask_upgrade_cask_or_reset() {
cask upgrade-cask || { rm -rf $HOME/.emacs.d/.cask && false; } cask upgrade-cask || { rm -rf $HOME/.emacs.d/.cask && false; }
} }
cask_install_or_reset() { cask_install_or_reset() {
rsync -azSHe ssh $HOME/.cask $(dirname $(dirname $(dirname $(cask package-directory))))
chmod 700 $HOME/.emacs.d/elpa
gpg2 --keyserver hkp://pool.sks-keyservers.net:80 --homedir $HOME/.emacs.d/elpa --recv-keys 066DAFCB81E42C40
mkdir -p $(cask package-directory) || true
cp -R $HOME/.emacs.d/elpa/gnupg $(cask package-directory)
cask install </dev/null cask install </dev/null
find $(cask package-directory)/archives -print | xargs ls -l find $(cask package-directory)/archives -print | xargs ls -l
find $(cask package-directory)/gnupg -print | xargs ls -l find $(cask package-directory)/gnupg -print | xargs ls -l
# travis cache # travis cache
rsync -azSHe ssh $(dirname $(dirname $(cask package-directory))) $HOME/ rsync -azSHe ssh $(dirname $(dirname $(cask package-directory))) $HOME/
} }
@ -36,5 +44,6 @@ fi
# Install dependencies for cider as descriped in ./Cask # Install dependencies for cider as descriped in ./Cask
# Effect is identical to "make elpa", but here we can retry # Effect is identical to "make elpa", but here we can retry
# in the event of network failures. # in the event of network failures.
update_elpa_keys
travis_retry cask_upgrade_cask_or_reset travis_retry cask_upgrade_cask_or_reset
travis_retry cask_install_or_reset && touch elpa-emacs travis_retry cask_install_or_reset && touch elpa-emacs