2022-05-23 00:16:32 +04:00

100 lines
2.4 KiB
Python

"""The main API for the v3 notebook format.
"""
# Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
__all__ = [
"NotebookNode",
"new_code_cell",
"new_text_cell",
"new_notebook",
"new_output",
"new_worksheet",
"new_metadata",
"new_author",
"new_heading_cell",
"nbformat",
"nbformat_minor",
"nbformat_schema",
"reads_json",
"writes_json",
"read_json",
"write_json",
"to_notebook_json",
"reads_py",
"writes_py",
"read_py",
"write_py",
"to_notebook_py",
"downgrade",
"upgrade",
"parse_filename",
]
import os
from .convert import downgrade, upgrade
from .nbbase import (
NotebookNode,
nbformat,
nbformat_minor,
nbformat_schema,
new_author,
new_code_cell,
new_heading_cell,
new_metadata,
new_notebook,
new_output,
new_text_cell,
new_worksheet,
)
from .nbjson import reads as read_json
from .nbjson import reads as reads_json
from .nbjson import to_notebook as to_notebook_json
from .nbjson import writes as write_json
from .nbjson import writes as writes_json
from .nbpy import reads as read_py
from .nbpy import reads as reads_py
from .nbpy import to_notebook as to_notebook_py
from .nbpy import writes as write_py
from .nbpy import writes as writes_py
def parse_filename(fname):
"""Parse a notebook filename.
This function takes a notebook filename and returns the notebook
format (json/py) and the notebook name. This logic can be
summarized as follows:
* notebook.ipynb -> (notebook.ipynb, notebook, json)
* notebook.json -> (notebook.json, notebook, json)
* notebook.py -> (notebook.py, notebook, py)
* notebook -> (notebook.ipynb, notebook, json)
Parameters
----------
fname : unicode
The notebook filename. The filename can use a specific filename
extention (.ipynb, .json, .py) or none, in which case .ipynb will
be assumed.
Returns
-------
(fname, name, format) : (unicode, unicode, unicode)
The filename, notebook name and format.
"""
basename, ext = os.path.splitext(fname)
if ext == ".ipynb":
format = "json"
elif ext == ".json":
format = "json"
elif ext == ".py":
format = "py"
else:
basename = fname
fname = fname + ".ipynb"
format = "json"
return fname, basename, format