def main_patch(args): base_filename = args.base patch_filename = args.patch output_filename = args.output for fn in (base_filename, patch_filename): if not os.path.exists(fn) and fn != EXPLICIT_MISSING_FILE: print("Missing file {}".format(fn)) return 1 before = read_notebook(base_filename, on_null='empty') with io.open(patch_filename, encoding="utf8") as patch_file: diff = json.load(patch_file) diff = to_diffentry_dicts(diff) after = patch_notebook(before, diff) if output_filename: nbformat.write(after, output_filename) else: try: nbformat.validate(after, version=4) except nbformat.ValidationError: print("Patch result is not a valid notebook, printing as JSON:") json.dump(after, sys.stdout) else: pretty_print_notebook(after) return 0
def main_show(args): if len(args.notebook) == 1 and args.notebook[0] == "-": files = [sys.stdin] else: for fn in args.notebook: if not os.path.exists(fn): print("Missing file {}".format(fn)) return 1 files = args.notebook if not files: print("Missing filenames.") return 1 for fn in files: nb = nbformat.read(fn, as_version=4) # This printer is to keep the unit tests passing, # some tests capture output with capsys which doesn't # pick up on sys.stdout.write() class Printer: def write(self, text): print(text, end="") # This configures which parts to include/ignore config = PrettyPrintConfig(out=Printer(), include=args) if len(args.notebook) > 1: # 'more' prints filenames with colons, should be good enough for us as well print(":" * 14) print(fn) print(":" * 14) pretty_print_notebook(nb, config) return 0
def main_show(args): if len(args.notebook) == 1 and args.notebook[0] == "-": files = [sys.stdin] else: for fn in args.notebook: if not os.path.exists(fn): print("Missing file {}".format(fn)) return 1 files = args.notebook if not files: print("Missing filenames.") return 1 for fn in files: nb = nbformat.read(fn, as_version=4) # This printer is to keep the unit tests passing, # some tests capture output with capsys which doesn't # pick up on sys.stdout.write() class Printer: def write(self, text): print(text, end="") # This configures which parts to include/ignore config = PrettyPrintConfig(out=Printer(), include=args) if len(args.notebook) > 1: # 'more' prints filenames with colons, should be good enough for us as well print(":"*14) print(fn) print(":"*14) pretty_print_notebook(nb, config) return 0
def merge(base, local, remote, args=None): """Merge changes introduced by notebooks local and remote from a shared ancestor base. Return new (partially) merged notebook and unapplied diffs from the local and remote side. """ if args and args.log_level == "DEBUG": # log pretty-print config object: config = PrettyPrintConfig() for (name, nb) in [("base", base), ("local", local), ("remote", remote)]: nbdime.log.debug("In merge, input %s notebook:", name) config.out = StringIO() pretty_print_notebook(nb, config) nbdime.log.debug(config.out.getvalue()) decisions = decide_merge(base, local, remote, args) merged = apply_decisions(base, decisions) if args and args.log_level == "DEBUG": nbdime.log.debug("In merge, merged notebook:") config.out = StringIO() pretty_print_notebook(merged, config) nbdime.log.debug(config.out.getvalue()) nbdime.log.debug("End merge") return merged, decisions
def main_patch(args): base_filename = args.base patch_filename = args.patch output_filename = args.output for fn in (base_filename, patch_filename): if not os.path.exists(fn) and fn != EXPLICIT_MISSING_FILE: print("Missing file {}".format(fn)) return 1 before = read_notebook(base_filename, on_null='empty') with io.open(patch_filename, encoding="utf8") as patch_file: diff = json.load(patch_file) diff = to_diffentry_dicts(diff) after = patch_notebook(before, diff) if output_filename: nbformat.write(after, output_filename) else: try: nbformat.validate(after, version=4) except nbformat.ValidationError: print("Patch result is not a valid notebook, printing as JSON:") json.dump(after, sys.stdout) else: # This printer is to keep the unit tests passing, # some tests capture output with capsys which doesn't # pick up on sys.stdout.write() class Printer: def write(self, text): print(text, end="") config = PrettyPrintConfig(out=Printer()) pretty_print_notebook(after, config=config) return 0
def main_show(args): if len(args.notebook) == 1 and args.notebook[0] == "-": files = [sys.stdin] else: for fn in args.notebook: if not os.path.exists(fn): print("Missing file {}".format(fn)) return 1 files = args.notebook if not files: print("Missing filenames.") return 1 for fn in files: nb = nbformat.read(fn, as_version=4) # This printer is to keep the unit tests passing, # some tests capture output with capsys which doesn't # pick up on sys.stdout.write() class Printer: def write(self, text): print(text, end="") if not any((args.sources, args.outputs, args.attachments, args.metadata, args.details)): ppargs = None else: ppargs = args if len(args.notebook) > 1: # 'more' prints filenames with colons, should be good enough for us as well print(":" * 14) print(fn) print(":" * 14) pretty_print_notebook(nb, ppargs, Printer()) return 0
def main_patch(args): base_filename = args.base patch_filename = args.patch output_filename = args.output for fn in (base_filename, patch_filename): if not os.path.exists(fn) and fn != EXPLICIT_MISSING_FILE: print("Missing file {}".format(fn)) return 1 before = read_notebook(base_filename, on_null='empty') with io.open(patch_filename, encoding="utf8") as patch_file: diff = json.load(patch_file) diff = to_diffentry_dicts(diff) after = patch_notebook(before, diff) if output_filename: nbformat.write(after, output_filename) else: try: nbformat.validate(after, version=4) except nbformat.ValidationError: print("Patch result is not a valid notebook, printing as JSON:") json.dump(after, sys.stdout) else: # This printer is to keep the unit tests passing, # some tests capture output with capsys which doesn't # pick up on sys.stdout.write() class Printer: def write(self, text): print(text, end="") config = PrettyPrintConfig(out=Printer()) pretty_print_notebook(after, config=config) return 0
def main_show(args): if len(args.notebook) == 1 and args.notebook[0] == "-": files = [sys.stdin] else: for fn in args.notebook: if not os.path.exists(fn): print("Missing file {}".format(fn)) return 1 files = args.notebook if not files: print("Missing filenames.") return 1 for fn in files: nb = nbformat.read(fn, as_version=4) # This printer is to keep the unit tests passing, # some tests capture output with capsys which doesn't # pick up on sys.stdout.write() class Printer: def write(self, text): print(text, end="") if not any((args.sources, args.outputs, args.attachments, args.metadata, args.details)): ppargs = None else: ppargs = args if len(args.notebook) > 1: # 'more' prints filenames with colons, should be good enough for us as well print(":"*14) print(fn) print(":"*14) pretty_print_notebook(nb, ppargs, Printer()) return 0
def main_show(args): fn = args.notebook if not os.path.exists(fn): print("Missing file {}".format(fn)) return 1 nb = nbformat.read(fn, as_version=4) # This printer is to keep the unit tests passing, # some tests capture output with capsys which doesn't # pick up on sys.stdout.write() class Printer: def write(self, text): print(text, end="") if not any((args.sources, args.outputs, args.attachments, args.metadata, args.details)): ppargs = None else: ppargs = args pretty_print_notebook(nb, ppargs, Printer()) return 0