99# TODO: Only update files changed since last run
1010# TODO: Add conversion tool from existing answer notebooks
1111
12+
1213def answer2exercise (infile , outfile ):
1314 """
1415 Convert answer notebooks to exercise notebooks
1516
1617 TODO: Fail if output notebook is empty?
1718
1819 """
19- cmd = ' jupyter nbconvert --config config.py --to notebook --output' .split ()
20+ cmd = " jupyter nbconvert --config config.py --to notebook --output" .split ()
2021 cmd .extend ([outfile , infile ])
2122 subprocess .run (cmd )
2223
@@ -26,41 +27,43 @@ def slide2html(infile):
2627 Convert slide notebooks to reveal.js
2728
2829 """
29- cmd = ('jupyter nbconvert'
30- ' --to slides'
31- ' --reveal-prefix=reveal.js'
32- ' --SlidesExporter.file_extension=.html'
33- ' --output-dir build' ).split ()
30+ cmd = (
31+ "jupyter nbconvert"
32+ " --to slides"
33+ " --reveal-prefix=reveal.js"
34+ " --SlidesExporter.file_extension=.html"
35+ " --output-dir build"
36+ ).split ()
3437 cmd .append (str (infile ))
3538 subprocess .run (cmd )
3639
3740
3841def run_slide (infile ):
39- cmd = ' jupyter nbconvert --to notebook --inplace --execute' .split ()
42+ cmd = " jupyter nbconvert --to notebook --inplace --execute" .split ()
4043 cmd .append (str (infile ))
4144
4245 devnull = subprocess .DEVNULL
4346 subprocess .run (cmd , check = True , stdout = devnull , stderr = devnull )
4447
4548
4649def main ():
47- p = Path ('.' )
50+ p = Path ("." )
4851
4952 # TODO: add test for errors
50- slide_fns = p .glob (' *slides.ipynb' )
53+ slide_fns = p .glob (" *slides.ipynb" )
5154 for slide_fn in sorted (slide_fns ):
52- print (f' Running { slide_fn } ' )
55+ print (f" Running { slide_fn } " )
5356 run_slide (slide_fn )
5457
55- print (' ipynb slides -> reveal.js html' )
56- slide_fns = p .glob (' *slides.ipynb' )
58+ print (" ipynb slides -> reveal.js html" )
59+ slide_fns = p .glob (" *slides.ipynb" )
5760 for slide_fn in sorted (slide_fns ):
5861 slide2html (slide_fn )
59-
60- print (' Convert answers to exercises' )
61- answers = p .glob (' *answers.ipynb' )
62+
63+ print (" Convert answers to exercises" )
64+ answers = p .glob (" *answers.ipynb" )
6265 for answer_nb in sorted (answers ):
63- exercise_nb = str (answer_nb ).replace (' answer' , ' exercise' )
66+ exercise_nb = str (answer_nb ).replace (" answer" , " exercise" )
6467 # print(f'{answer_nb} -> {exercise_nb}')
6568 answer2exercise (str (answer_nb ), exercise_nb )
6669
@@ -69,6 +72,5 @@ def main():
6972 # html slides -> pdf
7073
7174
72-
73- if __name__ == '__main__' :
75+ if __name__ == "__main__" :
7476 main ()
0 commit comments