Hello community,
here is the log from the commit of package python-nbsphinx-link for
openSUSE:Factory checked in at 2019-11-29 15:57:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-nbsphinx-link (Old)
and /work/SRC/openSUSE:Factory/.python-nbsphinx-link.new.26869 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-nbsphinx-link"
Fri Nov 29 15:57:42 2019 rev:2 rq:748500 version:1.3.0
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-nbsphinx-link/python-nbsphinx-link.changes
2019-05-22 11:11:07.702598550 +0200
+++
/work/SRC/openSUSE:Factory/.python-nbsphinx-link.new.26869/python-nbsphinx-link.changes
2019-11-29 16:01:58.216828726 +0100
@@ -1,0 +2,11 @@
+Wed Nov 13 16:40:01 UTC 2019 - Todd R <[email protected]>
+
+- Drop python2 support due to python-nbsphinx dropping python2 support
+
+-------------------------------------------------------------------
+Tue Nov 12 16:50:17 UTC 2019 - Todd R <[email protected]>
+
+- Update to 1.3.0
+ * Added media collection feature
+
+-------------------------------------------------------------------
Old:
----
nbsphinx-link-1.2.0.tar.gz
New:
----
nbsphinx-link-1.3.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-nbsphinx-link.spec ++++++
--- /var/tmp/diff_new_pack.ckmuNO/_old 2019-11-29 16:01:59.600828159 +0100
+++ /var/tmp/diff_new_pack.ckmuNO/_new 2019-11-29 16:01:59.604828157 +0100
@@ -17,8 +17,9 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
+%define skip_python2 1
Name: python-nbsphinx-link
-Version: 1.2.0
+Version: 1.3.0
Release: 0
Summary: Sphinx extension for including notebook files outside sphinx
source root
License: BSD-3-Clause
++++++ nbsphinx-link-1.2.0.tar.gz -> nbsphinx-link-1.3.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/nbsphinx-link-1.2.0/PKG-INFO
new/nbsphinx-link-1.3.0/PKG-INFO
--- old/nbsphinx-link-1.2.0/PKG-INFO 2019-01-28 17:24:04.000000000 +0100
+++ new/nbsphinx-link-1.3.0/PKG-INFO 2019-10-01 16:15:30.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: nbsphinx-link
-Version: 1.2.0
+Version: 1.3.0
Summary: A sphinx extension for including notebook files outside sphinx source
root
Home-page: https://github.com/vidartf/nbsphinx-link
Author: Vidar Tonaas Fauske
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/nbsphinx-link-1.2.0/README.rst
new/nbsphinx-link-1.3.0/README.rst
--- old/nbsphinx-link-1.2.0/README.rst 2019-01-28 15:03:06.000000000 +0100
+++ new/nbsphinx-link-1.3.0/README.rst 2019-09-27 14:50:52.000000000 +0200
@@ -24,6 +24,12 @@
"path": "relative/path/to/notebook"
}
+Optionally the "extra-media" key can be added, if your notebook includes
+any media, i.e. images. The value needs to be an array of strings,
+which are paths to the media files or directories to include. Note that
+this is not needed if the images are added as attachments to markdown
+cells.
+
Further keys might be added in the future.
Note that the documentation of this project might serve as a
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/nbsphinx-link-1.2.0/docs/source/conf.py
new/nbsphinx-link-1.3.0/docs/source/conf.py
--- old/nbsphinx-link-1.2.0/docs/source/conf.py 2018-05-25 15:37:27.000000000
+0200
+++ new/nbsphinx-link-1.3.0/docs/source/conf.py 2019-09-27 13:07:23.000000000
+0200
@@ -114,11 +114,6 @@
#
# html_theme_options = {}
-# 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']
-
# Custom sidebar templates, must be a dictionary that maps document names
# to template names.
#
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/nbsphinx-link-1.2.0/docs/source/introduction.nblink
new/nbsphinx-link-1.3.0/docs/source/introduction.nblink
--- old/nbsphinx-link-1.2.0/docs/source/introduction.nblink 2018-05-23
17:44:59.000000000 +0200
+++ new/nbsphinx-link-1.3.0/docs/source/introduction.nblink 2019-09-27
13:07:23.000000000 +0200
@@ -1,3 +1,8 @@
{
- "path": "../../notebooks/introduction.ipynb"
+ "path": "../../notebooks/introduction.ipynb",
+ "extra-media": [
+ "../../notebooks/images",
+ "../../notebooks/smile.png",
+ "not_a_path"
+ ]
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/nbsphinx-link-1.2.0/nbsphinx_link/__init__.py
new/nbsphinx-link-1.3.0/nbsphinx_link/__init__.py
--- old/nbsphinx-link-1.2.0/nbsphinx_link/__init__.py 2019-01-28
17:22:33.000000000 +0100
+++ new/nbsphinx-link-1.3.0/nbsphinx_link/__init__.py 2019-09-27
14:56:30.000000000 +0200
@@ -11,27 +11,155 @@
"path": "relative/path/to/notebook"
}
+
+Optionally the "extra-media" key can be added, if your notebook includes
+any media, i.e. images. The value needs to be an array of strings,
+which are paths to the media files or directories.
+
Further keys might be added in the future.
"""
-
import json
import os
+import shutil
from docutils import io, nodes, utils
from docutils.utils.error_reporting import SafeString, ErrorString
+import docutils # noqa: F401
from nbsphinx import NotebookParser, NotebookError, _ipynbversion
import nbformat
+from sphinx.util.logging import getLogger
from ._version import __version__
+def register_dependency(file_path, document):
+ """
+ Registers files as dependency, so sphinx rebuilds the docs
+ when they changed.
+
+ Parameters
+ ----------
+ file_path : str
+ [description]
+ document: docutils.nodes.document
+ Parsed document instance.
+ """
+ document.settings.record_dependencies.add(file_path)
+ document.settings.env.note_dependency(file_path)
+
+
+def copy_file(src, dest, document):
+ """
+ Copies a singe file from ``src`` to ``dest``.
+
+ Parameters
+ ----------
+ src : str
+ Path to the source file.
+ dest : str
+ Path to the destination file or directory.
+ document: docutils.nodes.document
+ Parsed document instance.
+ """
+ logger = getLogger(__name__)
+ try:
+ shutil.copy(src, dest)
+ register_dependency(src, document)
+ except (OSError) as e:
+ logger.warning(
+ "The the file {} couldn't be copied. "
+ "Error:\n {}".format(src, e)
+ )
+
+
+def copy_and_register_files(src, dest, document):
+ """
+ Copies a directory or file from the path ``src`` to ``dest``
+ and registers all files as dependency,
+ so sphinx rebuilds the docs when they changed.
+
+ Parameters
+ ----------
+ src : str
+ Path to the source directory or file
+ dest : str
+ Path to the destination directory or file
+ document: docutils.nodes.document
+ Parsed document instance.
+ """
+ if os.path.isdir(src):
+ for root, _, filenames in os.walk(src):
+ dst_root = os.path.join(dest, os.path.relpath(root, src))
+ if filenames and not os.path.exists(dst_root):
+ os.makedirs(dst_root)
+ for filename in filenames:
+ src_path = os.path.abspath(os.path.join(root, filename))
+ copy_file(src_path, dst_root, document)
+ else:
+ copy_file(src, dest, document)
+
+
+def collect_extra_media(extra_media, source_file, nb_path, document):
+ """
+ Collects extra media defined in the .nblink file, with the key
+ 'extra-media'. The extra media (i.e. images) need to be copied
+ in order for nbsphinx to properly render the notebooks, since
+ nbsphinx assumes that the files are relative to the .nblink.
+
+ Parameters
+ ----------
+ extra_media : list
+ Paths to directories and/or files with extra media.
+ source_file : str
+ Path to the .nblink file.
+ nb_path : str
+ Path to the notebook defined in the .nblink file , with the key 'path'.
+ document: docutils.nodes.document
+ Parsed document instance.
+
+ """
+ any_dirs = False
+ logger = getLogger(__name__)
+ source_dir = os.path.dirname(source_file)
+ if not isinstance(extra_media, list):
+ logger.warning(
+ 'The "extra-media", defined in {} needs to be a list of paths. '
+ 'The current value is:\n{}'.format(source_file, extra_media)
+ )
+ for extract_media_path in extra_media:
+ if os.path.isabs(extract_media_path):
+ src_path = extract_media_path
+ else:
+ extract_media_relpath = os.path.join(
+ source_dir, extract_media_path
+ )
+ src_path = os.path.normpath(
+ os.path.join(source_dir, extract_media_relpath)
+ )
+
+ dest_path = utils.relative_path(nb_path, src_path)
+ dest_path = os.path.normpath(os.path.join(source_dir, dest_path))
+ if os.path.exists(src_path):
+ any_dirs = any_dirs or os.path.isdir(src_path)
+ copy_and_register_files(src_path, dest_path, document)
+ else:
+ logger.warning(
+ 'The path "{}", defined in {} "extra-media", '
+ 'isn\'t a valid path.'.format(
+ extract_media_path, source_file
+ )
+ )
+ if any_dirs:
+ document.settings.env.note_reread()
+
+
class LinkedNotebookParser(NotebookParser):
"""A parser for .nblink files.
The parser will replace the link file with the output from
nbsphinx on the linked notebook. It will also add the linked
- file as a dependency, so that sphinx will take it into acount
+ file as a dependency, so that sphinx will take it into account
when figuring out whether it should be rebuilt.
The .nblink file is a JSON file with the following structure:
@@ -40,6 +168,10 @@
"path": "relative/path/to/notebook"
}
+ Optionally the "extra-media" key can be added, if your notebook includes
+ any media, i.e. images. The value needs to be an array of strings,
+ which are paths to the media files or directories.
+
Further keys might be added in the future.
"""
@@ -59,8 +191,12 @@
path = utils.relative_path(None, abs_path)
path = nodes.reprunicode(path)
- document.settings.record_dependencies.add(path)
- env.note_dependency(path)
+ extra_media = link.get('extra-media', None)
+ if extra_media:
+ source_file = env.doc2path(env.docname)
+ collect_extra_media(extra_media, source_file, path, document)
+
+ register_dependency(path, document)
target_root = env.config.nbsphinx_link_target_root
target = utils.relative_path(target_root, abs_path)
@@ -96,7 +232,6 @@
return super(LinkedNotebookParser, self).parse(rawtext, document)
-
def setup(app):
"""Initialize Sphinx extension."""
app.setup_extension('nbsphinx')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/nbsphinx-link-1.2.0/nbsphinx_link/_version.py
new/nbsphinx-link-1.3.0/nbsphinx_link/_version.py
--- old/nbsphinx-link-1.2.0/nbsphinx_link/_version.py 2019-01-28
17:22:53.000000000 +0100
+++ new/nbsphinx-link-1.3.0/nbsphinx_link/_version.py 2019-10-01
16:15:04.000000000 +0200
@@ -1,2 +1,2 @@
-version_info = (1, 2, 0)
+version_info = (1, 3, 0)
__version__ = ".".join(map(str, version_info))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/nbsphinx-link-1.2.0/nbsphinx_link.egg-info/PKG-INFO
new/nbsphinx-link-1.3.0/nbsphinx_link.egg-info/PKG-INFO
--- old/nbsphinx-link-1.2.0/nbsphinx_link.egg-info/PKG-INFO 2019-01-28
17:24:03.000000000 +0100
+++ new/nbsphinx-link-1.3.0/nbsphinx_link.egg-info/PKG-INFO 2019-10-01
16:15:30.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: nbsphinx-link
-Version: 1.2.0
+Version: 1.3.0
Summary: A sphinx extension for including notebook files outside sphinx source
root
Home-page: https://github.com/vidartf/nbsphinx-link
Author: Vidar Tonaas Fauske
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/nbsphinx-link-1.2.0/nbsphinx_link.egg-info/SOURCES.txt
new/nbsphinx-link-1.3.0/nbsphinx_link.egg-info/SOURCES.txt
--- old/nbsphinx-link-1.2.0/nbsphinx_link.egg-info/SOURCES.txt 2019-01-28
17:24:03.000000000 +0100
+++ new/nbsphinx-link-1.3.0/nbsphinx_link.egg-info/SOURCES.txt 2019-10-01
16:15:30.000000000 +0200
@@ -17,4 +17,7 @@
nbsphinx_link.egg-info/dependency_links.txt
nbsphinx_link.egg-info/requires.txt
nbsphinx_link.egg-info/top_level.txt
-notebooks/introduction.ipynb
\ No newline at end of file
+notebooks/introduction.ipynb
+notebooks/smile.png
+notebooks/images/smile.png
+notebooks/images/subsubdir/smile.png
\ No newline at end of file
Binary files old/nbsphinx-link-1.2.0/notebooks/images/smile.png and
new/nbsphinx-link-1.3.0/notebooks/images/smile.png differ
Binary files old/nbsphinx-link-1.2.0/notebooks/images/subsubdir/smile.png and
new/nbsphinx-link-1.3.0/notebooks/images/subsubdir/smile.png differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/nbsphinx-link-1.2.0/notebooks/introduction.ipynb
new/nbsphinx-link-1.3.0/notebooks/introduction.ipynb
--- old/nbsphinx-link-1.2.0/notebooks/introduction.ipynb 2018-05-23
19:13:55.000000000 +0200
+++ new/nbsphinx-link-1.3.0/notebooks/introduction.ipynb 2019-09-27
14:35:18.000000000 +0200
@@ -1,79 +1,103 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Introduction"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "For a start, consider the documentation folder of the nbsphinx-link
repository. This documentation page itself comes from a linked notebook:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "foobar\n"
- ]
- }
- ],
- "source": [
- "def foo(a):\n",
- " return 'foo' + a\n",
- "\n",
- "print(foo('bar'))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "After the installation steps (installing the package, and adding
`nbsphinx_link` as an extension in the Sphinx config), you can link external
notebooks by including `.nblink` files in your documentation source tree. The
format of the link file is as follows:\n",
- "\n",
- "```json\n",
- "{\n",
- " \"path\": \"relative/path/to/notebook\"\n",
- "}\n",
- "```"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "It should then Just Work. For further information and examples, consider
inspecting the Sphinx config file of the nbsphinx-link repository!"
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.6.5"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 1
-}
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Introduction"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "For a start, consider the documentation folder of the nbsphinx-link
repository. This documentation page itself comes from a linked notebook:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "foobar\n"
+ ]
+ }
+ ],
+ "source": [
+ "def foo(a):\n",
+ " return 'foo' + a\n",
+ "\n",
+ "print(foo('bar'))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "After the installation steps (installing the package, and adding
`nbsphinx_link` as an extension in the Sphinx config), you can link external
notebooks by including `.nblink` files in your documentation source tree. The
format of the link file is as follows:\n",
+ "\n",
+ "```json\n",
+ "{\n",
+ " \"path\": \"relative/path/to/notebook\"\n",
+ "}\n",
+ "```"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "It should then Just Work. For further information and examples, consider
inspecting the Sphinx config file of the nbsphinx-link repository!"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Image including example\n",
+ "Look at this happy smile, because the notebook made it in the docs.\n",
+ "\n",
+ "### Image path next to notebook\n",
+ "\n",
+ "\n",
+ "### Image path in subdirectory notebook\n",
+ "\n",
+ "\n",
+ "### Image path in sub-subdirectory notebook\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.7.3"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
Binary files old/nbsphinx-link-1.2.0/notebooks/smile.png and
new/nbsphinx-link-1.3.0/notebooks/smile.png differ