From 863dd1793f3535d5c5e9f322d9839ccb1e94cbab Mon Sep 17 00:00:00 2001 From: Henry Wilde Date: Fri, 25 Jan 2019 17:25:32 +0000 Subject: [PATCH] Write script and make it executable (#9) * write script * rename script * Make blackbook script executable. --- setup.py | 1 + src/blackbook/__init__.py | 29 ++++++++++++++++++++++++++++- src/blackbook/__main__.py | 18 ++++++++++++++++++ src/blackbook/main.py | 28 ---------------------------- 4 files changed, 47 insertions(+), 29 deletions(-) create mode 100644 src/blackbook/__main__.py delete mode 100644 src/blackbook/main.py diff --git a/setup.py b/setup.py index 36aa95e..b6c989a 100644 --- a/setup.py +++ b/setup.py @@ -16,4 +16,5 @@ url="", license="The MIT License (MIT)", description="`Black` for Jupyter notebooks.", + entry_points={"console_scripts": "blackbook=blackbook.__main__:main"}, ) diff --git a/src/blackbook/__init__.py b/src/blackbook/__init__.py index 8f4776f..5902942 100644 --- a/src/blackbook/__init__.py +++ b/src/blackbook/__init__.py @@ -1 +1,28 @@ -from .main import gen_notebook_files_in_dir, format_notebook_content +"""""" + +from typing import Iterator + +import re +import pathlib +import json + +import black + + +def gen_notebook_files_in_dir(path: pathlib.Path) -> Iterator[pathlib.Path]: + + return path.glob("**/*.ipynb") + +def format_notebook_content(path: pathlib.Path) -> dict: + content = path.read_text() + nb = json.loads(content) + + for cell in nb["cells"]: + try: + string = "".join(cell["source"]) + formatted_string = black.format_str(string, line_length=black.DEFAULT_LINE_LENGTH) + cell["source"] = [s + "\n" for s in formatted_string.split("\n")][:-1] + except black.InvalidInput: + pass + + return nb diff --git a/src/blackbook/__main__.py b/src/blackbook/__main__.py new file mode 100644 index 0000000..bc6fb5c --- /dev/null +++ b/src/blackbook/__main__.py @@ -0,0 +1,18 @@ +import json +import pathlib +import sys + +import blackbook + + +def main(path=None): + if path is None: + path = pathlib.Path(sys.argv[1]) + + for notebook_path in blackbook.gen_notebook_files_in_dir(path): + nb = blackbook.format_notebook_content(notebook_path) + + notebook_path.write_text(json.dumps(nb)) + +if __name__ == '__main__': + main() diff --git a/src/blackbook/main.py b/src/blackbook/main.py deleted file mode 100644 index 5902942..0000000 --- a/src/blackbook/main.py +++ /dev/null @@ -1,28 +0,0 @@ -"""""" - -from typing import Iterator - -import re -import pathlib -import json - -import black - - -def gen_notebook_files_in_dir(path: pathlib.Path) -> Iterator[pathlib.Path]: - - return path.glob("**/*.ipynb") - -def format_notebook_content(path: pathlib.Path) -> dict: - content = path.read_text() - nb = json.loads(content) - - for cell in nb["cells"]: - try: - string = "".join(cell["source"]) - formatted_string = black.format_str(string, line_length=black.DEFAULT_LINE_LENGTH) - cell["source"] = [s + "\n" for s in formatted_string.split("\n")][:-1] - except black.InvalidInput: - pass - - return nb