From 86dc39a572207e5bd5b11bbca8018a2d3601093d Mon Sep 17 00:00:00 2001 From: cyyc1 <114281716+cyyc1@users.noreply.github.com> Date: Wed, 5 Oct 2022 20:43:07 -0700 Subject: [PATCH] Add comments --- .../string_fixer_for_jupyter_notebooks.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/pre_commit_hooks/string_fixer_for_jupyter_notebooks.py b/pre_commit_hooks/string_fixer_for_jupyter_notebooks.py index 6f1de07..78854fd 100644 --- a/pre_commit_hooks/string_fixer_for_jupyter_notebooks.py +++ b/pre_commit_hooks/string_fixer_for_jupyter_notebooks.py @@ -14,19 +14,26 @@ def fix_strings(filename: str) -> int: cells = notebook_contents['cells'] return_value = 0 for cell in cells: - if cell['cell_type'] == 'code': + if cell.get('cell_type') == 'code' and 'source' in cell: + # Each element in cell['source'] is a string that ends with \n, + # except for the last element, which is why we don't join by \n source_in_1_line = ''.join(cell['source']) fixed = fix_strings_in_file_contents(source_in_1_line) if fixed != source_in_1_line: fixed_lines = fixed.split('\n') - cell['source'] = [_ + '\n' for _ in fixed_lines[:-1]] + [fixed_lines[-1]] + cell['source'] = ( + [_ + '\n' for _ in fixed_lines[:-1]] + + [fixed_lines[-1]] + ) return_value = 1 if return_value == 1: notebook_contents['cells'] = cells with open(filename, 'w') as f: json.dump(notebook_contents, f, indent=1) - f.write("\n") # because json.dump doesn't put \n at the end + # Jupyter notebooks (.ipynb) always ends with a new line + # but json.dump does not. + f.write("\n") return return_value