Skip to content
Snippets Groups Projects
ipynb_filter.py 1.13 KiB
Newer Older
Bas Nijholt's avatar
Bas Nijholt committed
#!/usr/bin/env python3

# `ipynb_filter.py`:
# This is a git filters that strips out the outputs and
# meta data of a Jupyer notebook using `nbconvert`.
# Execute the following line in order to activate this filter:
# python ipynb_filter.py
#
# The following line should be in `.gitattributes`:
# *.ipynb filter=ipynb_filter
#
# from github.com/basnijholt/ipynb_git_filters

from nbconvert.preprocessors import Preprocessor


class RemoveMetadata(Preprocessor):
    def preprocess(self, nb, resources):
Bas Nijholt's avatar
Bas Nijholt committed
        nb.metadata = {
            "language_info": {"name": "python", "pygments_lexer": "ipython3"}
        }
Bas Nijholt's avatar
Bas Nijholt committed
        return nb, resources


Bas Nijholt's avatar
Bas Nijholt committed
if __name__ == "__main__":
Bas Nijholt's avatar
Bas Nijholt committed
    # The filter is getting activated
    import os
Bas Nijholt's avatar
Bas Nijholt committed

Bas Nijholt's avatar
Bas Nijholt committed
    git_cmd = 'git config filter.ipynb_filter.clean "jupyter nbconvert --to notebook --config ipynb_filter.py --stdin --stdout"'
    os.system(git_cmd)
else:
    # This script is used as config
    c.Exporter.preprocessors = [RemoveMetadata]
    c.ClearOutputPreprocessor.enabled = True
    c.ClearOutputPreprocessor.remove_metadata_fields = [
Bas Nijholt's avatar
Bas Nijholt committed
        "deletable",
        "editable",
        "collapsed",
        "scrolled",
    ]