* doc fixes * doc fix * doc fix * Add suggestion how to change source of download * Fix typo Co-authored-by: Nikolay Tyukaev <nikolay.tyukaev@intel.com>
88 lines
2.6 KiB
Python
88 lines
2.6 KiB
Python
from jinja2 import Template
|
|
from os import path, remove
|
|
from shutil import rmtree
|
|
|
|
|
|
def create_content(template: str, notebooks_data: dict, file_name: str):
|
|
"""Filling rst template with data
|
|
|
|
:param template: jinja template that will be filled with notebook data
|
|
:type template: str
|
|
:param notebooks_data: data structure containing information required to fill template
|
|
:type notebooks_data: dict
|
|
:param file_name: file name
|
|
:type file_name: str
|
|
:returns: Filled template
|
|
:rtype: str
|
|
|
|
"""
|
|
template = Template(template)
|
|
notebooks_data["notebook"] = "-".join(file_name.split("-")[:-2])
|
|
return template.render(notebooks_data)
|
|
|
|
|
|
def add_content_below(text: str, path: str, line=3) -> bool:
|
|
"""Add additional content (like binder button) to existing rst file
|
|
|
|
:param text: Text that will be added inside rst file
|
|
:type text: str
|
|
:param path: Path to modified file
|
|
:type path: str
|
|
:param line: Line number that content will be added. Defaults to 3.
|
|
:type line: int
|
|
:returns: Informs about success or failure in modifying file
|
|
:rtype: bool
|
|
|
|
"""
|
|
try:
|
|
with open(path, "r+", encoding="utf-8") as file:
|
|
current_file = file.readlines()
|
|
current_file[line:line] = text
|
|
file.seek(0)
|
|
file.writelines(current_file)
|
|
return True
|
|
except FileNotFoundError:
|
|
return False
|
|
|
|
|
|
def process_notebook_name(notebook_name: str) -> str:
|
|
"""Processes notebook name
|
|
|
|
:param notebook_name: Notebook name by default keeps convention:
|
|
[3 digit]-name-with-dashes-with-output.rst,
|
|
example: 001-hello-world-with-output.rst
|
|
:type notebook_name: str
|
|
:returns: Processed notebook name,
|
|
001-hello-world-with-output.rst -> 001. hello world
|
|
:rtype: str
|
|
|
|
"""
|
|
return (
|
|
notebook_name[:3]
|
|
+ "."
|
|
+ " ".join(notebook_name[4:].split(".")[0].split("-")[:-2])
|
|
)
|
|
|
|
|
|
def verify_notebook_name(notebook_name: str) -> bool:
|
|
"""Verification based on notebook name
|
|
|
|
:param notebook_name: Notebook name by default keeps convention:
|
|
[3 digit]-name-with-dashes-with-output.rst,
|
|
example: 001-hello-world-with-output.rst
|
|
:type notebook_name: str
|
|
:returns: Return if notebook meets requirements
|
|
:rtype: bool
|
|
|
|
"""
|
|
return notebook_name[:3].isdigit() and notebook_name[-4:] == ".rst"
|
|
|
|
|
|
def split_notebooks_into_sections(notebooks: list) -> list:
|
|
series = [list() for _ in range(5)]
|
|
for notebook in notebooks:
|
|
try:
|
|
series[int(notebook.name[0])].append(notebook)
|
|
except IndexError:
|
|
pass
|
|
return series |