#!/usr/bin/env python # -*- coding: utf-8 -*- """ Convert sphinx gallery notebook from empty to image filled Created on Fri Sep 1 16:43:45 2017 @author: rflamary """ import sys import json import glob import hashlib import subprocess import os cache_file='cache_nbrun' path_doc='source/auto_examples/' path_nb='../notebooks/' def load_json(fname): try: f=open(fname) nb=json.load(f) f.close() except (OSError, IOError) : nb={} return nb def save_json(fname,nb): f=open(fname,'w') f.write(json.dumps(nb)) f.close() def md5(fname): hash_md5 = hashlib.md5() with open(fname, "rb") as f: for chunk in iter(lambda: f.read(4096), b""): hash_md5.update(chunk) return hash_md5.hexdigest() def to_update(fname,cache): if fname in cache: if md5(path_doc+fname)==cache[fname]: res=False else: res=True else: res=True return res def update(fname,cache): # jupyter nbconvert --to notebook --execute mynotebook.ipynb --output targte subprocess.check_call(['cp',path_doc+fname,path_nb]) print(' '.join(['jupyter','nbconvert','--to','notebook','--ExecutePreprocessor.timeout=600','--execute',path_nb+fname,'--inplace'])) subprocess.check_call(['jupyter','nbconvert','--to','notebook','--ExecutePreprocessor.timeout=600','--execute',path_nb+fname,'--inplace']) cache[fname]=md5(path_doc+fname) cache=load_json(cache_file) lst_file=glob.glob(path_doc+'*.ipynb') lst_file=[os.path.basename(name) for name in lst_file] for fname in lst_file: if to_update(fname,cache): print('Updating file: {}'.format(fname)) update(fname,cache) save_json(cache_file,cache)