Skip to content

nbautoexport.utils

cleared_argv()

Context manager that temporarily clears sys.argv. Useful for wrapping nbconvert so unexpected arguments from outer program (e.g., nbautoexport) aren't passed to nbconvert.

Source code in /home/runner/work/nbautoexport/nbautoexport/nbautoexport/utils.py
 96
 97
 98
 99
100
101
102
103
104
105
106
@contextmanager
def cleared_argv():
    """Context manager that temporarily clears sys.argv. Useful for wrapping nbconvert so
    unexpected arguments from outer program (e.g., nbautoexport) aren't passed to nbconvert.
    """
    prev_argv = [arg for arg in sys.argv]
    sys.argv = [sys.argv[0]]
    try:
        yield
    finally:
        sys.argv = prev_argv

find_notebooks(directory)

Finds Jupyter notebooks in a directory. Not recursive.

Parameters:

Name Type Description Default
directory Path

directory to search for notebook files

required

Returns:

Type Description
List[JupyterNotebook]

List[JupyterNotebook]: notebooks found

Source code in /home/runner/work/nbautoexport/nbautoexport/nbautoexport/utils.py
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
def find_notebooks(directory: Path) -> List[JupyterNotebook]:
    """Finds Jupyter notebooks in a directory. Not recursive.

    Args:
        directory (Path): directory to search for notebook files

    Returns:
        List[JupyterNotebook]: notebooks found
    """
    notebooks = []
    for subfile in directory.iterdir():
        if subfile.is_file() and subfile.name:
            try:
                notebook = nbformat.read(str(subfile), as_version=nbformat.NO_CONVERT)
                nbformat.validate(notebook)
                notebooks.append(JupyterNotebook(path=subfile, metadata=notebook.metadata))
            except Exception as e:
                if subfile.suffix.lower() == ".ipynb":
                    warn(
                        f"Error reading {subfile.resolve()} as Jupyter Notebook: "
                        + f"[{type(e).__name__}] {e}"
                    )
    return notebooks

working_directory(directory)

Changes working directory and returns to previous on exit.

Source code in /home/runner/work/nbautoexport/nbautoexport/nbautoexport/utils.py
109
110
111
112
113
114
115
116
117
@contextmanager
def working_directory(directory: Path):
    """Changes working directory and returns to previous on exit."""
    prev_cwd = Path.cwd()
    os.chdir(directory)
    try:
        yield
    finally:
        os.chdir(prev_cwd)