Skip to content

Commit 63d0df2

Browse files
authored
Merge pull request #1013 from romainx/pandoc
Remove installation of unnecessary pandoc and tex OS packages
2 parents 31b807e + 581534e commit 63d0df2

File tree

5 files changed

+206
-5
lines changed

5 files changed

+206
-5
lines changed

base-notebook/test/test_pandoc.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Copyright (c) Jupyter Development Team.
2+
# Distributed under the terms of the Modified BSD License.
3+
4+
import logging
5+
6+
import pytest
7+
8+
LOGGER = logging.getLogger(__name__)
9+
10+
11+
def test_pandoc(container):
12+
"""Pandoc shall be able to convert MD to HTML."""
13+
c = container.run(
14+
tty=True, command=["start.sh", "bash", "-c", 'echo "**BOLD**" | pandoc']
15+
)
16+
c.wait(timeout=10)
17+
logs = c.logs(stdout=True).decode("utf-8")
18+
LOGGER.debug(logs)
19+
assert "<p><strong>BOLD</strong></p>" in logs
20+

minimal-notebook/Dockerfile

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,14 @@ RUN apt-get update && apt-get install -yq --no-install-recommends \
1919
libxrender1 \
2020
lmodern \
2121
netcat \
22-
pandoc \
2322
python-dev \
24-
texlive-fonts-extra \
23+
# ---- nbconvert dependencies ----
24+
texlive-xetex \
2525
texlive-fonts-recommended \
2626
texlive-generic-recommended \
27-
texlive-latex-base \
28-
texlive-latex-extra \
29-
texlive-xetex \
27+
# Optional dependency
28+
texlive-fonts-extra \
29+
# ----
3030
tzdata \
3131
unzip \
3232
nano \
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
{
2+
"metadata": {
3+
"name": "notebook1"
4+
},
5+
"nbformat": 3,
6+
"nbformat_minor": 0,
7+
"worksheets": [
8+
{
9+
"cells": [
10+
{
11+
"cell_type": "heading",
12+
"level": 1,
13+
"metadata": {},
14+
"source": [
15+
"A simple SymPy example"
16+
]
17+
},
18+
{
19+
"cell_type": "markdown",
20+
"metadata": {},
21+
"source": [
22+
"First we import SymPy and initialize printing:"
23+
]
24+
},
25+
{
26+
"cell_type": "code",
27+
"collapsed": false,
28+
"input": [
29+
"from sympy import init_printing\n",
30+
"from sympy import *\n",
31+
" init_printing()"
32+
],
33+
"language": "python",
34+
"metadata": {},
35+
"outputs": [],
36+
"prompt_number": 2
37+
},
38+
{
39+
"cell_type": "markdown",
40+
"metadata": {},
41+
"source": [
42+
"Create a few symbols:"
43+
]
44+
},
45+
{
46+
"cell_type": "code",
47+
"collapsed": false,
48+
"input": [
49+
"x,y,z = symbols('x y z')"
50+
],
51+
"language": "python",
52+
"metadata": {},
53+
"outputs": [],
54+
"prompt_number": 4
55+
},
56+
{
57+
"cell_type": "markdown",
58+
"metadata": {},
59+
"source": [
60+
"Here is a basic expression:"
61+
]
62+
},
63+
{
64+
"cell_type": "code",
65+
"collapsed": false,
66+
"input": [
67+
"e = x**2 + 2.0*y + sin(z); e"
68+
],
69+
"language": "python",
70+
"metadata": {},
71+
"outputs": [
72+
{
73+
"latex": [
74+
"$$x^{2} + 2.0 y + \\sin{\\left (z \\right )}$$"
75+
],
76+
"metadata": {},
77+
"output_type": "pyout",
78+
"png": "iVBORw0KGgoAAAANSUhEUgAAAKMAAAAZBAMAAACvE4OgAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEHarIkSJZt3NVLsy\nme8Q6PJIAAACz0lEQVRIDa1UTWjUQBT+ZpvdzW7TGlrxItjYSg/C6vbiDwjmoCgUpHioPYhdqig9\nFJYiPYmW4klB14NgFGnw4EHpj7UgUtTFXhSEBgVBxIOFggWVrrUqiMY3mZkkLNIK7oN575vvvfky\n8yYJIGzgkSlRrULKrivVSkvq6LbxtcaSjV3aSo0lgWyl5pK69V+SRlEsPxNTGYhhDrV3M2Ue2etc\nEDmuMmM+IjolrCuHXNoLoQDNSAXdzbjsfFVKTY1vCgFXFIxenG4cFSSzRewAPnN0FugXjPDr45MQ\nJwoKtitgXL9zT+CsJeIHYG+Z4H1gwhRU4G/FcAQbbYU3KdDo+0sCK8lRU0guA72uKqMYk9RehHxP\niDIu0NS2v90KGShJYi7T7tgvkrQ2vIT2XtRISWNra6lzGc8/PW3ji4PL7Vmge095YIX0iB71NCaZ\n5N3XyM0VCuNIyFNIyY3AMG/KDUvjn90DGmwq9wpIl5AyU5WsTYy0aJf6JFGB5An3Der5jExKHjNR\n4JKPge/EXqDBoOXpkxkmkJHFfAFRVhDIveWA0S57N2Me6yw+DSX1n1uCq3sIfCF2IcjNkjeWyKli\nginHubboOB4vSNAjyaiXE26ygrkyTfod55Lj3CTE+n2P73ImJpnk6wJJKjYJSwt3OQbNJu4icM5s\nKGGbzMuD70N6JSbJD44x7pLDyJrbkfiLpOEhYVMJSVEj83x5YFLyNrAzJsmvJ+uhLrieXvcJDshy\nHtQuD54c2IWWEnSXfUTDZJJfAjcpOW5imp9aHvw4ZZ4NDV4FGjw0tzadKgbFwinJUd//AT0P1tdW\nBtuRU39oKdk9ONQ163fM+nvu/s4D/FX30otdQIZGlSnJKpq6KUxKVqV1WxGHFIhishjhEO1Gi3r4\nkZCMg+hH1henV8EjmFoly1PTMs/Uadaox+FceY2STpmvt9co/Pe0Jvt1GvgDK/Osw/4jQ4wAAAAA\nSUVORK5CYII=\n",
79+
"prompt_number": 6,
80+
"text": [
81+
" 2 \n",
82+
"x + 2.0\u22c5y + sin(z)"
83+
]
84+
}
85+
],
86+
"prompt_number": 6
87+
},
88+
{
89+
"cell_type": "code",
90+
"collapsed": false,
91+
"input": [
92+
"diff(e, x)"
93+
],
94+
"language": "python",
95+
"metadata": {},
96+
"outputs": [
97+
{
98+
"latex": [
99+
"$$2 x$$"
100+
],
101+
"metadata": {},
102+
"output_type": "pyout",
103+
"png": "iVBORw0KGgoAAAANSUhEUgAAABQAAAAOBAMAAADd6iHDAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIpm7MhCriUTv3c12\nVGZoascqAAAAgElEQVQIHWNgVDJ2YICAMAb2H1BmKgPDTChzFgNDvgOEvT8AzgQKrA9gPZPYUwNk\ncXxnCGd4dWA1kMllwFDKUB9wEchUZmAIYNgMZDDwJIDIPyDiEgOjAAPLFwZWBhYFBh6BqzwfGI4y\nSJUXZXH8Zf7A+IBh////v1hzjh5/xwAAW80hUDE8HYkAAAAASUVORK5CYII=\n",
104+
"prompt_number": 7,
105+
"text": [
106+
"2\u22c5x"
107+
]
108+
}
109+
],
110+
"prompt_number": 7
111+
},
112+
{
113+
"cell_type": "code",
114+
"collapsed": false,
115+
"input": [
116+
"integrate(e, z)"
117+
],
118+
"language": "python",
119+
"metadata": {},
120+
"outputs": [
121+
{
122+
"latex": [
123+
"$$x^{2} z + 2.0 y z - \\cos{\\left (z \\right )}$$"
124+
],
125+
"metadata": {},
126+
"output_type": "pyout",
127+
"png": "iVBORw0KGgoAAAANSUhEUgAAALsAAAAZBAMAAACbakK8AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEHarIkSJZt3NVLsy\nme8Q6PJIAAADAklEQVRIDbVVS2gTURQ90/wmk0k6tCJCsR1SKShIsxE3CgNWBKUxq9qFmqFqShfF\nUKQrkaDiF0pcCKYgBBcuBLV+wIWKARe6kQ4UhNKKWdiF4KIptmA/xPvmzZuMxdYUzIPcd+655568\nvLlJAL6G32oOasQWNHz5Rvg6nrKh/mygfSzlX2ygPaBUGmov6//NXs1yq4sex2EPrsHemTd2snNg\ntkb+Cx1zBL6SqwxZLvQAKYHzKZaPY4fh4TeHd0S5Nox9OClItm/jiU9DrEwwVEawpiVis9VkimqX\nAOr4o2cCs/0BT2I5+FYJRhJbePQxgzcD7QLEqtV5gdnu2Icr3L45gcCyt74Z7neL4SLQ0nm4S+dM\nYCz1gSPHnhKZDWyHhcCCNKwjqaF/TkwGl0L6nClie/wc1D1xdoNsSLhT0IJkhi7Lzr22xb8keE/N\nPm0Sc9yEuhRUyuiG9HzvFNeImCyq39SriOhtQI7IV/TiTqE8glqwohjE0NJwiANxOZTdZoxtfzSa\nx2tI8DtHcKQoQFmV6f1XT2swibxFL+6k5EgenhBCqKLTPX3ULnaYdDlaTMcCSd8zuXTvBq2bJUJr\nlE4WgSV5ZRdBzLFgO6nzhJp1ltvrlB2HCoWxQuG+jTvt2GxBWUZaU2mMApZNuSHA3vJpCliRhqqs\nZtvbTrb9ZIk+i70Ut1OcnpgeKskTCFUwjaYy8Jhr3eiefq0HIfa7yC6HOwVyULRuNDn21JngbcL+\nE8A+MNnSxb+w59+Cj2tELJBbjEZr8SGwn0j2aLkTPdp08R2OcKV6fXB3ikPH3n8tM5WTfrETtZcw\ng3QWH0dH7nKNiMkszqo/EDafaHhJ5Bm6ee4UtdAabxnMcmUUl0SnYx+uVqs5XAGN9QGgdeCrASv0\n3TmCsJcOdhnozexD38goK9HXynEKr1OKDs9guhQD039kGySyIQpJAdbvJ9YTlPvyUl3/aLUf34G/\nuGxIyXpE37DoLbAHwJaU53t9MRCfrU8o/k4iRn36Lar8Wd5wAfgN4R6xelyy/ssAAAAASUVORK5C\nYII=\n",
128+
"prompt_number": 8,
129+
"text": [
130+
" 2 \n",
131+
"x \u22c5z + 2.0\u22c5y\u22c5z - cos(z)"
132+
]
133+
}
134+
],
135+
"prompt_number": 8
136+
},
137+
{
138+
"cell_type": "code",
139+
"collapsed": false,
140+
"input": [],
141+
"language": "python",
142+
"metadata": {},
143+
"outputs": []
144+
}
145+
],
146+
"metadata": {}
147+
}
148+
]
149+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Copyright (c) Jupyter Development Team.
2+
# Distributed under the terms of the Modified BSD License.
3+
4+
import logging
5+
6+
import pytest
7+
import os
8+
9+
LOGGER = logging.getLogger(__name__)
10+
11+
12+
@pytest.mark.parametrize("format", ["html", "pdf"])
13+
def test_nbconvert(container, format):
14+
"""Check if nbconvert is able to convert a notebook file"""
15+
host_data_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)), "data")
16+
cont_data_dir = "/home/jovyan/data"
17+
test_file = "notebook1"
18+
output_dir = "/tmp"
19+
LOGGER.info(f"Converting example notebook to {format.upper()} ...")
20+
command = f"jupyter nbconvert {cont_data_dir}/{test_file}.ipynb --output-dir {output_dir} --to {format}"
21+
c = container.run(
22+
volumes={host_data_dir: {"bind": cont_data_dir, "mode": "ro"}},
23+
tty=True,
24+
command=["start.sh", "bash", "-c", command],
25+
)
26+
rv = c.wait(timeout=30)
27+
assert rv == 0 or rv["StatusCode"] == 0
28+
logs = c.logs(stdout=True).decode("utf-8")
29+
LOGGER.debug(logs)
30+
assert f"{output_dir}/{test_file}.{format}" in logs
31+

pytest.ini

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
[pytest]
2+
addopts = -rA
23
log_cli = 1
34
log_cli_level = INFO
45
log_cli_format = %(asctime)s [%(levelname)8s] %(message)s (%(filename)s:%(lineno)s)

0 commit comments

Comments
 (0)