import os import boto3 import shutil import nbformat from nbconvert import HTMLExporter, preprocessors report_list = [ # "business_metrics", # "feature_evaluation_report_v1.1", "global_metrics_upload", # "jtbd", ] def generate_report(report_name): bucket = os.getenv("S3_BUCKET") s3 = boto3.client('s3') ep = preprocessors.ExecutePreprocessor(timeout=2400, kernel_name='python3') html_exporter = HTMLExporter(template_name='classic') HTMLExporter.exclude_input_prompt = True HTMLExporter.exclude_input = True HTMLExporter.exclude_input_prompt = True source = 'notebook/' + report_name + '.ipynb' target = 'html/' + report_name + '.html' data = s3.get_object(Bucket=bucket, Key=source) content = data['Body'].read() jake_notebook = nbformat.reads(content, as_version=4) ep.preprocess(jake_notebook) for cell in jake_notebook['cells']: for idx, output in enumerate(cell.get('outputs', [])): if output.get('name') == 'stderr': del cell['outputs'][idx] (body, resources) = html_exporter.from_notebook_node(jake_notebook) s3.put_object(Body=body, Bucket=bucket, Key=target, ContentType='text/html', ACL='bucket-owner-full-control') return { 'success': True, } for report in report_list: generate_report(report) print(report + " executed")