diff --git a/MANIFEST.in b/MANIFEST.in index ef5fba1..9016800 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -10,6 +10,7 @@ exclude appveyor.yml exclude codecov.yml # directory includes +graft docs graft src graft tests diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000..f277548 --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,200 @@ +# Makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +PAPER = +BUILDDIR = build + +# User-friendly check for sphinx-build +ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) +$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) +endif + +# Internal variables. +PAPEROPT_a4 = -D latex_paper_size=a4 +PAPEROPT_letter = -D latex_paper_size=letter +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source +# the i18n builder cannot share the environment and doctrees with the others +I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source + +.PHONY: help clean rst html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest coverage gettext + +help: + @echo "Please use \`make ' where is one of" + @echo." rst to create rst files from markdown README files" + @echo " html to make standalone HTML files" + @echo " dirhtml to make HTML files named index.html in directories" + @echo " singlehtml to make a single large HTML file" + @echo " pickle to make pickle files" + @echo " json to make JSON files" + @echo " htmlhelp to make HTML files and a HTML help project" + @echo " qthelp to make HTML files and a qthelp project" + @echo " applehelp to make an Apple Help Book" + @echo " devhelp to make HTML files and a Devhelp project" + @echo " epub to make an epub" + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" + @echo " latexpdf to make LaTeX files and run them through pdflatex" + @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" + @echo " text to make text files" + @echo " man to make manual pages" + @echo " texinfo to make Texinfo files" + @echo " info to make Texinfo files and run them through makeinfo" + @echo " gettext to make PO message catalogs" + @echo " changes to make an overview of all changed/added/deprecated items" + @echo " xml to make Docutils-native XML files" + @echo " pseudoxml to make pseudoxml-XML files for display purposes" + @echo " linkcheck to check all external links for integrity" + @echo " doctest to run all doctests embedded in the documentation (if enabled)" + @echo " coverage to run coverage check of the documentation (if enabled)" + +clean: + rm -rf $(BUILDDIR)/* + rm -rf source/extensions.rst + rm -R `ls -1 -d source/*/` + +rst: + python source/md2rst.py + @echo + @echo "Converting readme markdown files to rst" + +html: + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." + +dirhtml: + $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." + +singlehtml: + $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml + @echo + @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." + +pickle: + $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle + @echo + @echo "Build finished; now you can process the pickle files." + +json: + $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json + @echo + @echo "Build finished; now you can process the JSON files." + +htmlhelp: + $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp + @echo + @echo "Build finished; now you can run HTML Help Workshop with the" \ + ".hhp project file in $(BUILDDIR)/htmlhelp." + +qthelp: + $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp + @echo + @echo "Build finished; now you can run "qcollectiongenerator" with the" \ + ".qhcp project file in $(BUILDDIR)/qthelp, like this:" + @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/nbconvert.qhcp" + @echo "To view the help file:" + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/nbconvert.qhc" + +applehelp: + $(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp + @echo + @echo "Build finished. The help book is in $(BUILDDIR)/applehelp." + @echo "N.B. You won't be able to view it unless you put it in" \ + "~/Library/Documentation/Help or install it in your application" \ + "bundle." + +devhelp: + $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp + @echo + @echo "Build finished." + @echo "To view the help file:" + @echo "# mkdir -p $$HOME/.local/share/devhelp/nbconvert" + @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/nbconvert" + @echo "# devhelp" + +epub: + $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub + @echo + @echo "Build finished. The epub file is in $(BUILDDIR)/epub." + +latex: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo + @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." + @echo "Run \`make' in that directory to run these through (pdf)latex" \ + "(use \`make latexpdf' here to do that automatically)." + +latexpdf: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through pdflatex..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +latexpdfja: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through platex and dvipdfmx..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +text: + $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text + @echo + @echo "Build finished. The text files are in $(BUILDDIR)/text." + +man: + $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man + @echo + @echo "Build finished. The manual pages are in $(BUILDDIR)/man." + +texinfo: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo + @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." + @echo "Run \`make' in that directory to run these through makeinfo" \ + "(use \`make info' here to do that automatically)." + +info: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo "Running Texinfo files through makeinfo..." + make -C $(BUILDDIR)/texinfo info + @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." + +gettext: + $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale + @echo + @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." + +changes: + $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes + @echo + @echo "The overview file is in $(BUILDDIR)/changes." + +linkcheck: + $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck + @echo + @echo "Link check complete; look for any errors in the above output " \ + "or in $(BUILDDIR)/linkcheck/output.txt." + +doctest: + $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest + @echo "Testing of doctests in the sources finished, look at the " \ + "results in $(BUILDDIR)/doctest/output.txt." + +coverage: + $(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage + @echo "Testing of coverage in the sources finished, look at the " \ + "results in $(BUILDDIR)/coverage/python.txt." + +xml: + $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml + @echo + @echo "Build finished. The XML files are in $(BUILDDIR)/xml." + +pseudoxml: + $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml + @echo + @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." diff --git a/docs/environment.yml b/docs/environment.yml new file mode 100644 index 0000000..41753ed --- /dev/null +++ b/docs/environment.yml @@ -0,0 +1,11 @@ +name: nbextensions_docs + +dependencies: +- pandoc +- nbformat +- jupyter_client +- sphinx +- pip: + - nbsphinx + - entrypoints + - recommonmark diff --git a/docs/make.bat b/docs/make.bat new file mode 100644 index 0000000..a862c2c --- /dev/null +++ b/docs/make.bat @@ -0,0 +1,272 @@ +@ECHO OFF + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set BUILDDIR=build +set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source +set I18NSPHINXOPTS=%SPHINXOPTS% source +if NOT "%PAPER%" == "" ( + set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% + set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% +) + +if "%1" == "" goto help + +if "%1" == "help" ( + :help + echo.Please use `make ^` where ^ is one of + echo. rst to create rst files from markdown README files + echo. html to make standalone HTML files + echo. dirhtml to make HTML files named index.html in directories + echo. singlehtml to make a single large HTML file + echo. pickle to make pickle files + echo. json to make JSON files + echo. htmlhelp to make HTML files and a HTML help project + echo. qthelp to make HTML files and a qthelp project + echo. devhelp to make HTML files and a Devhelp project + echo. epub to make an epub + echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter + echo. text to make text files + echo. man to make manual pages + echo. texinfo to make Texinfo files + echo. gettext to make PO message catalogs + echo. changes to make an overview over all changed/added/deprecated items + echo. xml to make Docutils-native XML files + echo. pseudoxml to make pseudoxml-XML files for display purposes + echo. linkcheck to check all external links for integrity + echo. doctest to run all doctests embedded in the documentation if enabled + echo. coverage to run coverage check of the documentation if enabled + goto end +) + +if "%1" == "clean" ( + for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i + del /q /s %BUILDDIR%\* + for /d %%i in (source\*) do rmdir /q /s %%i + + goto end +) + +if "%1" == "rst" ( + python source/md2rst.py + echo. + echo.Converting readme markdown files to rst + goto end +) + +REM Check if sphinx-build is available and fallback to Python version if any +%SPHINXBUILD% 2> nul +if errorlevel 9009 goto sphinx_python +goto sphinx_ok + +:sphinx_python + +set SPHINXBUILD=python -m sphinx.__init__ +%SPHINXBUILD% 2> nul +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +:sphinx_ok + + +if "%1" == "html" ( + %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/html. + goto end +) + +if "%1" == "dirhtml" ( + %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. + goto end +) + +if "%1" == "singlehtml" ( + %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. + goto end +) + +if "%1" == "pickle" ( + %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can process the pickle files. + goto end +) + +if "%1" == "json" ( + %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can process the JSON files. + goto end +) + +if "%1" == "htmlhelp" ( + %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can run HTML Help Workshop with the ^ +.hhp project file in %BUILDDIR%/htmlhelp. + goto end +) + +if "%1" == "qthelp" ( + %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can run "qcollectiongenerator" with the ^ +.qhcp project file in %BUILDDIR%/qthelp, like this: + echo.^> qcollectiongenerator %BUILDDIR%\qthelp\nbconvert.qhcp + echo.To view the help file: + echo.^> assistant -collectionFile %BUILDDIR%\qthelp\nbconvert.ghc + goto end +) + +if "%1" == "devhelp" ( + %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. + goto end +) + +if "%1" == "epub" ( + %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The epub file is in %BUILDDIR%/epub. + goto end +) + +if "%1" == "latex" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "latexpdf" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + cd %BUILDDIR%/latex + make all-pdf + cd %~dp0 + echo. + echo.Build finished; the PDF files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "latexpdfja" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + cd %BUILDDIR%/latex + make all-pdf-ja + cd %~dp0 + echo. + echo.Build finished; the PDF files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "text" ( + %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The text files are in %BUILDDIR%/text. + goto end +) + +if "%1" == "man" ( + %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The manual pages are in %BUILDDIR%/man. + goto end +) + +if "%1" == "texinfo" ( + %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. + goto end +) + +if "%1" == "gettext" ( + %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The message catalogs are in %BUILDDIR%/locale. + goto end +) + +if "%1" == "changes" ( + %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes + if errorlevel 1 exit /b 1 + echo. + echo.The overview file is in %BUILDDIR%/changes. + goto end +) + +if "%1" == "linkcheck" ( + %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck + if errorlevel 1 exit /b 1 + echo. + echo.Link check complete; look for any errors in the above output ^ +or in %BUILDDIR%/linkcheck/output.txt. + goto end +) + +if "%1" == "doctest" ( + %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest + if errorlevel 1 exit /b 1 + echo. + echo.Testing of doctests in the sources finished, look at the ^ +results in %BUILDDIR%/doctest/output.txt. + goto end +) + +if "%1" == "coverage" ( + %SPHINXBUILD% -b coverage %ALLSPHINXOPTS% %BUILDDIR%/coverage + if errorlevel 1 exit /b 1 + echo. + echo.Testing of coverage in the sources finished, look at the ^ +results in %BUILDDIR%/coverage/python.txt. + goto end +) + +if "%1" == "xml" ( + %SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The XML files are in %BUILDDIR%/xml. + goto end +) + +if "%1" == "pseudoxml" ( + %SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml. + goto end +) + +:end diff --git a/docs/source/conf.py b/docs/source/conf.py new file mode 100644 index 0000000..604cd60 --- /dev/null +++ b/docs/source/conf.py @@ -0,0 +1,310 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# nbconvert documentation build configuration file, created by +# sphinx-quickstart on Tue Jun 9 17:11:30 2015. +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import os +from recommonmark.parser import CommonMarkParser +from recommonmark.transform import AutoStructify + + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +#sys.path.insert(0, os.path.abspath('.')) + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +#needs_sphinx = '1.0' + +source_parsers = { + '.md': CommonMarkParser, +} + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.autodoc', + 'sphinx.ext.intersphinx', + 'sphinx.ext.napoleon', +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# source_suffix = ['.rst', '.md'] +source_suffix = ['.rst', '.ipynb', '.md' ] + +# The encoding of source files. +#source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = 'nbextensions' +from datetime import date +year = date.today().year +copyright = '2015-%s, Jupyter Contrib Team' % year +author = 'Jupyter Contrib Team' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +#today = '' +# Else, today_fmt is used as the format for a strftime call. +#today_fmt = '%B %d, %Y' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +exclude_patterns = ['.ipynb_checkpoints', 'example.ipynb'] + +# The reST default role (used for this markup: `text`) to use for all +# documents. +#default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +#add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +#add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +#show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# A list of ignored prefixes for module index sorting. +#modindex_common_prefix = [] + +# If true, keep warnings as "system message" paragraphs in the built documents. +#keep_warnings = False + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = False + + +# -- Options for HTML output ---------------------------------------------- + +# Set on_rtd to whether we are building on readthedocs.org. We get this line of +# code grabbed from docs.readthedocs.org +on_rtd = os.environ.get('READTHEDOCS', None) == 'True' + +if not on_rtd: # only import and set the theme if we're building docs locally + import sphinx_rtd_theme + html_theme = 'sphinx_rtd_theme' + html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] + +# otherwise, readthedocs.org uses their default theme, so no need to specify it + + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +#html_theme = 'sphinx_rtd_theme' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +#html_theme_options = {} + +# Add any paths that contain custom themes here, relative to this directory. +#html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] + +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +#html_title = None + +# A shorter title for the navigation bar. Default is the same as html_title. +#html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +#html_logo = None + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +#html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# Add any extra paths that contain custom files (such as robots.txt or +# .htaccess) here, relative to this directory. These files are copied +# directly to the root of the documentation. +#html_extra_path = [] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +#html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +#html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +#html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +#html_additional_pages = {} + +# If false, no module index is generated. +#html_domain_indices = True + +# If false, no index is generated. +#html_use_index = True + +# If true, the index is split into individual pages for each letter. +#html_split_index = False + +# If true, links to the reST sources are added to the pages. +#html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +#html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +#html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +#html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +#html_file_suffix = None + +# Language to be used for generating the HTML full-text search index. +# Sphinx supports the following languages: +# 'da', 'de', 'en', 'es', 'fi', 'fr', 'h', 'it', 'ja' +# 'nl', 'no', 'pt', 'ro', 'r', 'sv', 'tr' +#html_search_language = 'en' + +# A dictionary with options for the search language support, empty by default. +# Now only 'ja' uses this config value +#html_search_options = {'type': 'default'} + +# The name of a javascript file (relative to the configuration directory) that +# implements a search results scorer. If empty, the default will be used. +#html_search_scorer = 'scorer.js' + +# Output file base name for HTML help builder. +htmlhelp_basename = 'nbconvertdoc' + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = { +# The paper size ('letterpaper' or 'a4paper'). +#'papersize': 'letterpaper', + +# The font size ('10pt', '11pt' or '12pt'). +#'pointsize': '10pt', + +# Additional stuff for the LaTeX preamble. +#'preamble': '', + +# Latex figure (float) alignment +#'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'nbextensions.tex', 'Contributed Notebook Extensions Documentation', + 'Jupyter Contrib Team', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +#latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +#latex_use_parts = False + +# If true, show page references after internal links. +#latex_show_pagerefs = False + +# If true, show URL addresses after external links. +#latex_show_urls = False + +# Documents to append as an appendix to all manuals. +#latex_appendices = [] + +# If false, no module index is generated. +#latex_domain_indices = True + + +# -- Options for manual page output --------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'nbextensions', 'nbextensions Documentation', + [author], 1) +] + +# If true, show URL addresses after external links. +#man_show_urls = False + + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'nbextensions', 'nbextensions Documentation', + author, 'nbextensions', 'Contributed Jupyter Notebook Extensions.', + 'Miscellaneous'), +] + +# Documents to append as an appendix to all manuals. +#texinfo_appendices = [] + +# If false, no module index is generated. +#texinfo_domain_indices = True + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +#texinfo_show_urls = 'footnote' + +# If true, do not generate a @detailmenu in the "Top" node's menu. +#texinfo_no_detailmenu = False + +# Example configuration for intersphinx: refer to the Python standard library. +intersphinx_mapping = {'https://docs.python.org/': None} + +def setup(app): + app.add_config_value('recommonmark_config', { + 'url_resolver': lambda url: 'abc' + url, + 'auto_toc_tree_section': 'Contents', + }, True) + app.add_transform(AutoStructify ) + diff --git a/docs/source/exporting.rst b/docs/source/exporting.rst new file mode 100644 index 0000000..ed30646 --- /dev/null +++ b/docs/source/exporting.rst @@ -0,0 +1,57 @@ +Exporting +========= + +Some extensions require additional effort when exporting them to other formats using `nbconvert`. +Please read the documentation here: http://nbconvert.readthedocs.io/en/latest/index.html + +Preprocessors +------------- + +pre_svg2pdf + Supports converting notebooks to PDF. Because LaTeX can't use SVG graphics, they are converted to PDF + using `inkscape`. This preprocessor is for markdown graphics only. For cell output, there is already a preprocessor + in `nbconvert`. + +pre_codefolding + Folds codecells as displayed in the notebook. + +pre_collapsible_headings + For collapsible_headings extensions. Hides collapsed parts of the notebook. + +pre_pymarkdown + Inserts the varaible values for the Python markdown extension. + +Generic documentation for preprocessors can be found here: http://nbconvert.readthedocs.io/en/latest/api/preprocessors.html + +Postprocessors +-------------- + +post_embedhtml + Embed graphics (pdf, svg and images) in the HTML file. + `nbconvert --to html --option='embed' mynotebook.ipynb` + +Generic documentation for postprocessors can be found here: http://nbconvert.readthedocs.io/en/latest/api/postprocessors.html + +Exporters +--------- +Generic documentation for exporters can be found here:: http://nbconvert.readthedocs.io/en/latest/api/exporters.html + +Templates +--------- + +highlighter + To be done. + +nbextensions + Template for notebook extensions hiding code cells, output, or text cells. + +printviewlatex + Template for the printview extension converting the current notebook to LaTeX or PDF. + +toc3 + To be done. + +Generic documentation on templates can be found here: http://nbconvert.readthedocs.io/en/latest/customizing.html + + + diff --git a/docs/source/extensions.rst b/docs/source/extensions.rst new file mode 100644 index 0000000..ed06bb5 --- /dev/null +++ b/docs/source/extensions.rst @@ -0,0 +1,51 @@ + +List of Extensions +================== + +.. toctree:: + :maxdepth: 1 + + autosavetime/README + autoscroll/README + chrome-clipboard/readme + codefolding/readme + collapsible_headings/readme + dragdrop/readme + equation-numbering/readme + execute_time/readme + exercise/history + exercise/readme + exercise2/readme + freeze/readme + gist_it/readme + help_panel/readme + hide_input/readme + hide_input_all/readme + highlighter/readme + hinterland/README + init_cell/README + keyboard_shortcut_editor/README + latex_envs/readme + doc/README + limit_output/readme + move_selected_cells/README + navigation-hotkeys/readme + notify/readme + printview/readme + python-markdown/readme + rubberband/readme + ruler/readme + runtools/readme + scratchpad/README + search-replace/readme + skill/README + skip-traceback/readme + slidemode2/README + spellchecker/README + splitcell/readme + toc2/README + toggle_all_line_numbers/readme + tree-filter/readme + yapf_ext/README + yapf_ext/yapf_ext + diff --git a/docs/source/index.rst b/docs/source/index.rst new file mode 100644 index 0000000..f7ca01b --- /dev/null +++ b/docs/source/index.rst @@ -0,0 +1,30 @@ +======================================== +Non-Official Jupyter Notebook Extensions +======================================== + +The ``jupyter_notebook_extensions`` package contains a collection of extensions that add +functionality to the Jupyter notebook. These extensions are mostly written in Javascript and +will be loaded locally in your browser. + +The IPython-contrib repository is maintained independently by a group of +users and developers and not officially related to the IPython +development team. + +The maturity of the provided extensions varies, so please `create an +issue `__ +at the project's `github +repository `__ +if you encounter any problems. + + +Contents: +========= + +.. toctree:: + :maxdepth: 2 + + install + extensions + troubleshooting + exporting + internals diff --git a/docs/source/install.rst b/docs/source/install.rst new file mode 100644 index 0000000..15068b5 --- /dev/null +++ b/docs/source/install.rst @@ -0,0 +1,99 @@ +Installing Jupyter Notebook Extensions +====================================== + +To install notebook extensions, three steps are required. First, this Python package needs to be installed. +Then, the notebook extensions themselves can be copied to the Jupyter data directory. +Finally, the installed notebook extensions can be enabled, either by using built-in Jupyter commands, +or more convenient by using the jupyter_nbextensions_configurator server extension. + +The Python package installation step is necessary to allow painless installation of the extensions togther with +additional items like nbconvert templates, pre-/postprocessors, and exporters. + + +1. Install the python package +----------------------------- + +All of the nbextensions in this repo are provided as parts of a python package, +which is installable in the usual manner, using `pip` or the `setup.py` script. +You can install directly from the current master branch of the repository + + pip install https://github.com/ipython-contrib/jupyter_contrib_nbextensions/tarball/master + +All the usual pip options apply, e.g. using pip's `--upgrade` flag to force an +upgrade, or `-e` for an editable install. + +You can also install from a cloned repo, which can be useful for development. +You can clone the repo using + + git clone https://github.com/ipython-contrib/jupyter_contrib_nbextensions.git jupyter_contrib_nbextensions + +Then perform an editable pip install using + + pip install -e jupyter_contrib_nbextensions + + +2. Install javascript and css files +----------------------------------- + +This step copies the nbextensions javascript and css files into the jupyter +server's search directory. A `jupyter` subcommand is provided which installs +all of the nbextensions files: + + jupyter contrib nbextension install --user + +The command is essentially a wrapper around the notebook-provided +`jupyter nbextension`, and can take most of the same options, such as `--user` +to install into the user's home jupyter directories, `--system` to perform +installation into system-wide jupyter directories, `sys-prefix` to install into +python's `sys.prefix`, useful for instance in virtual environments, and +`--symlink` to symlink the nbextensions rather than copying each file +(recommended). + +An analogous `uninstall` command is also provided, to remove all of the +nbextension files from the jupyter directories. + + +3. Enabling/Disabling extensions +-------------------------------- + +To use an nbextension, you’ll also need to enable it, which tells the notebook +interface to load it. To do this, you can use a Jupyter subcommand: + + jupyter nbextension enable + +for example, + + jupyter nbextension enable codefolding/main + +To disable the extension again, use + + jupyter nbextension disable + +Alternatively, and more conveniently, you can use the +[`jupyter_nbextensions_configurator`](https://github.com/Jupyter-contrib/jupyter_nbextensions_configurator) +server extension, which is installed as a dependency of this repo, and can be +used to enable and disable the individual nbextensions, as well as configure +their options. + + +4. Migrating from older versions of this repo +--------------------------------------------- + +The `jupyter contrib nbextensions` command also offers a `migrate` subcommand, +which will + + * uninstall the old repository version's files, config and python package + * adapt all `require` paths which have changed. E.g. if you had the + collapsible headings nbextension enabled with its old require path of + `usability/collapsible_headings/main`, the `migrate` command will alter + this to match the new require path of `collapsible_headings/main`. + +For complex or customized installation scenarios, please look at the +documentation for installing notebook extensions, server extensions, nbconvert +pre/postprocessors and templates on the Jupyter homepage http://www.jupyter.org. +More information can also be found in the +[Wiki](https://github.com/ipython-contrib/jupyter_contrib_nbextensions/wiki). + +.. seealso:: + + `Installing Jupyter `__ diff --git a/docs/source/internals.rst b/docs/source/internals.rst new file mode 100644 index 0000000..5b1bb6c --- /dev/null +++ b/docs/source/internals.rst @@ -0,0 +1,12 @@ +Notebook extension structure +============================ + +The nbextensions are stored each as a separate subdirectory of +``src/jupyter_contrib_nbextensions/nbextensions`` + +Each notebook extension typically has it's own directory containing: + +* ``thisextension/main.js``: javascript implementing the extension +* ``thisextension/main.css``: optional CSS +* ``thisextension/readme.md``: readme file describing the extension in markdown format +* ``thisextension/config.yaml``: file describing the extension to the ``jupyter_nbextensions_configurator`` server extension diff --git a/docs/source/md2rst.py b/docs/source/md2rst.py new file mode 100644 index 0000000..dc0fac6 --- /dev/null +++ b/docs/source/md2rst.py @@ -0,0 +1,47 @@ +# use pandoc to convert md files to rst and copy images +import os +from shutil import copyfile +import pypandoc + +extensions = """ +List of Extensions +================== + +.. toctree:: + :maxdepth: 1 + +""" + +thispath = os.path.dirname(os.path.abspath(__file__)) +os.chdir(thispath) +# generate file with link to all extensions containing md files +src_path = os.path.join('..', '..', 'src', 'jupyter_contrib_nbextensions', 'nbextensions') +for root, directories, filenames in os.walk(src_path): + for filename in filenames: + ext = os.path.splitext(filename) + if 'md' in ext[1]: + md_filename = os.path.join(root, filename) + rst_path = os.path.split(root)[-1] + if not os.path.exists(rst_path): + os.mkdir(rst_path) + rst_name = ext[0]+'.rst' + rst_filename = os.path.join(rst_path, rst_name) + output = pypandoc.convert_file(md_filename, format='md', to='rst', outputfile=rst_filename) + extensions += ' %s/%s\n' % (rst_path, ext[0]) + # copy images + for root2, directories2, filenames2 in os.walk(root): + for name2 in filenames2: + ext2 = os.path.splitext(name2) + if ext2[1].strip('.').lower() in ['jpg', 'png', 'gif']: + src = os.path.join(root2, name2) + dst = os.path.join(rst_path, name2) + #print('Source file: %s' % src) + print('Destination: %s' % dst) + copyfile(src, dst) + +# Generate list of extensions +f = open('extensions.rst', 'w') +f.write(extensions) +f.write('\n') +f.close() + diff --git a/docs/source/troubleshooting.rst b/docs/source/troubleshooting.rst new file mode 100644 index 0000000..b3d7bc5 --- /dev/null +++ b/docs/source/troubleshooting.rst @@ -0,0 +1,8 @@ +Troubleshooting +=============== + +If you are migrating from an older version of the notebook extensions contrib repository, +some old files might be left on your system. This can lead for example having all extensions twice. + +The extensions will be located in the `nbextensions` subdirectory in one of the `data:` directories that can be found +using the `jupyter --paths` command.