Hello community,
here is the log from the commit of package python-jupyter_nbsphinx for
openSUSE:Factory checked in at 2018-04-19 15:32:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-jupyter_nbsphinx (Old)
and /work/SRC/openSUSE:Factory/.python-jupyter_nbsphinx.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-jupyter_nbsphinx"
Thu Apr 19 15:32:25 2018 rev:6 rq:597932 version:0.3.2
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-jupyter_nbsphinx/python-jupyter_nbsphinx.changes
2018-02-19 13:01:01.941937615 +0100
+++
/work/SRC/openSUSE:Factory/.python-jupyter_nbsphinx.new/python-jupyter_nbsphinx.changes
2018-04-19 15:32:30.111630378 +0200
@@ -1,0 +2,7 @@
+Thu Apr 19 05:06:27 UTC 2018 - [email protected]
+
+- Update to version 0.3.2
+ * Links to local files are rewritten for all Sphinx source files (not only
+ Jupyter notebooks)
+
+-------------------------------------------------------------------
Old:
----
nbsphinx-0.3.1.tar.gz
New:
----
nbsphinx-0.3.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-jupyter_nbsphinx.spec ++++++
--- /var/tmp/diff_new_pack.14bYrQ/_old 2018-04-19 15:32:31.251583425 +0200
+++ /var/tmp/diff_new_pack.14bYrQ/_new 2018-04-19 15:32:31.255583261 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-jupyter_nbsphinx
-Version: 0.3.1
+Version: 0.3.2
Release: 0
Summary: Jupyter Notebook Tools for Sphinx
License: MIT
++++++ nbsphinx-0.3.1.tar.gz -> nbsphinx-0.3.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/nbsphinx-0.3.1/NEWS.rst new/nbsphinx-0.3.2/NEWS.rst
--- old/nbsphinx-0.3.1/NEWS.rst 2018-01-17 14:09:56.000000000 +0100
+++ new/nbsphinx-0.3.2/NEWS.rst 2018-03-28 13:44:00.000000000 +0200
@@ -1,3 +1,7 @@
+Version 0.3.2 (2018-03-28):
+ * Links to local files are rewritten for all Sphinx source files (not only
+ Jupyter notebooks)
+
Version 0.3.1 (2018-01-17):
* Enable notebook translations (NB: The use of reST strings is temporary!)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/nbsphinx-0.3.1/PKG-INFO new/nbsphinx-0.3.2/PKG-INFO
--- old/nbsphinx-0.3.1/PKG-INFO 2018-01-17 14:11:40.000000000 +0100
+++ new/nbsphinx-0.3.2/PKG-INFO 2018-03-28 13:46:05.000000000 +0200
@@ -1,12 +1,11 @@
Metadata-Version: 1.1
Name: nbsphinx
-Version: 0.3.1
+Version: 0.3.2
Summary: Jupyter Notebook Tools for Sphinx
Home-page: http://nbsphinx.readthedocs.io/
Author: Matthias Geier
Author-email: [email protected]
License: MIT
-Description-Content-Type: UNKNOWN
Description: Jupyter Notebook Tools for Sphinx
=================================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/nbsphinx-0.3.1/doc/a-normal-rst-file.rst
new/nbsphinx-0.3.2/doc/a-normal-rst-file.rst
--- old/nbsphinx-0.3.1/doc/a-normal-rst-file.rst 2018-01-02
12:04:07.000000000 +0100
+++ new/nbsphinx-0.3.2/doc/a-normal-rst-file.rst 2018-03-26
12:31:38.000000000 +0200
@@ -5,21 +5,122 @@
.. note:: Those still work!
-Links to Notebooks
-------------------
+Links to Notebooks (and Other Sphinx Source Files)
+--------------------------------------------------
-Links to notebooks can be easily created:
-:ref:`/subdir/a-notebook-in-a-subdir.ipynb`
-(the notebook title is used as link text).
-You can also use
-:ref:`an alternative text </subdir/a-notebook-in-a-subdir.ipynb>`.
+Links to Sphinx source files can be created like normal `Sphinx hyperlinks`_,
+just using a relative path to the local file: link_.
-The above links were created with:
+.. _Sphinx hyperlinks: http://www.sphinx-doc.org/en/stable/rest.html
+ #external-links
+.. _link: subdir/a-notebook-in-a-subdir.ipynb
+
+.. code-block:: rst
+
+ using a relative path to the local file: link_.
+
+ .. _link: subdir/a-notebook-in-a-subdir.ipynb
+
+If the link text has a space (or some other strange character) in it, you have
+to surround it with backticks: `a notebook link`_.
+
+.. _a notebook link: subdir/a-notebook-in-a-subdir.ipynb
+
+.. code-block:: rst
+
+ surround it with backticks: `a notebook link`_.
+
+ .. _a notebook link: subdir/a-notebook-in-a-subdir.ipynb
+
+You can also use an `anonymous hyperlink target`_, like this: link__.
+If you have multiple of those, their order matters!
+
+.. _anonymous hyperlink target: http://docutils.sourceforge.net/docs/ref/rst/
+ restructuredtext.html#anonymous-hyperlinks
+
+__ subdir/a-notebook-in-a-subdir.ipynb
+
+.. code-block:: rst
+
+ like this: link__.
+
+ __ subdir/a-notebook-in-a-subdir.ipynb
+
+Finally, you can use `Embedded URIs`_, like this
+`link <subdir/a-notebook-in-a-subdir.ipynb>`_.
+
+.. _Embedded URIs: http://docutils.sourceforge.net/docs/ref/rst/
+ restructuredtext.html#embedded-uris-and-aliases
+
+.. code-block:: rst
+
+ like this `link <subdir/a-notebook-in-a-subdir.ipynb>`_.
+
+.. note::
+
+ These links should also work on Github and in other rendered
+ reStructuredText pages.
+
+Links to subsections are also possible by adding a hash sign (``#``) and the
+section title to any of the above-mentioned link variants.
+You have to replace spaces in the section titles by hyphens.
+For example, see this subsection_.
+
+.. _subsection: subdir/a-notebook-in-a-subdir.ipynb#A-Sub-Section
+
+.. code-block:: rst
+
+ For example, see this subsection_.
+
+ .. _subsection: subdir/a-notebook-in-a-subdir.ipynb#A-Sub-Section
+
+
+Links to Local Files (HTML only)
+--------------------------------
+
+If you use any of the above-mentioned methods to link to a local file that
+*isn't* a Sphinx source file, it will be automatically copied to the HTML
output
+directory, like it would if you `link from a notebook`__.
+
+Alternatively, you can of course as always use Sphinx's download__ role.
+
+__ markdown-cells.ipynb#Links-to-Local-Files-(HTML-only)
+__ http://www.sphinx-doc.org/en/stable/markup/inline.html#role-download
+
+
+Links to Notebooks, Ye Olde Way
+-------------------------------
+
+In addition to the way shown above, you can also create links to notebooks (and
+other Sphinx source files) with
+`:ref: <http://www.sphinx-doc.org/en/stable/markup/inline.html#role-ref>`_.
+This has some disadvantages:
+
+* It is arguably a bit more clunky.
+* Because ``:ref:`` is a Sphinx feature, the links don't work on Github and
+ other rendered reStructuredText pages that use plain old ``docutils``.
+
+It also has one important advantage:
+
+* The link text can automatically be taken from the actual section title.
+
+A link with automatic title looks like this:
+:ref:`/subdir/a-notebook-in-a-subdir.ipynb`.
.. code-block:: rst
:ref:`/subdir/a-notebook-in-a-subdir.ipynb`
- :ref:`an alternative text </subdir/a-notebook-in-a-subdir.ipynb>`
+
+But you can also provide
+:ref:`your own link title </subdir/a-notebook-in-a-subdir.ipynb>`.
+
+.. code-block:: rst
+
+ :ref:`your own link title </subdir/a-notebook-in-a-subdir.ipynb>`
+
+However, if you want to use your own title, you are probably better off using
+the method described above in
+`Links to Notebooks (and Other Sphinx Source Files)`_.
Links to subsections are also possible, e.g.
:ref:`/subdir/a-notebook-in-a-subdir.ipynb#A-Sub-Section`
@@ -35,9 +136,9 @@
.. note::
+ * The paths have to be relative to the top source directory and they have
to
+ start with a slash (``/``).
* Spaces in the section title have to be replaced by hyphens!
- * Notebook paths have to be relative to the top source directory and they
- have to start with a slash (``/``).
Sphinx Directives for Info/Warning Boxes
----------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/nbsphinx-0.3.1/doc/markdown-cells.ipynb
new/nbsphinx-0.3.2/doc/markdown-cells.ipynb
--- old/nbsphinx-0.3.1/doc/markdown-cells.ipynb 2018-01-16 11:44:50.000000000
+0100
+++ new/nbsphinx-0.3.2/doc/markdown-cells.ipynb 2018-03-19 09:36:55.000000000
+0100
@@ -263,7 +263,6 @@
"\n",
"Sphinx section anchors are different from Jupyter section anchors!\n",
"To create a link to a subsection in an `.rst` file (or another
non-notebook source file), you not only have to replace spaces with hyphens,
but also slashes and some other characters.\n",
- "Furthermore, you have to change the whole section title to lowercase
letters.\n",
"In case of doubt, just check the target HTML page generated by Sphinx.\n",
"\n",
"</div>"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/nbsphinx-0.3.1/doc/orphan.ipynb
new/nbsphinx-0.3.2/doc/orphan.ipynb
--- old/nbsphinx-0.3.1/doc/orphan.ipynb 2018-01-16 11:44:50.000000000 +0100
+++ new/nbsphinx-0.3.2/doc/orphan.ipynb 2018-03-26 12:31:38.000000000 +0200
@@ -23,16 +23,10 @@
" [some link text](notebookname.ipynb)\n",
" ```\n",
"\n",
- "* ... from a [reST page](a-normal-rst-file.rst#Links-to-Notebooks)
using\n",
+ "* ... from a [reST
page](a-normal-rst-file.rst#links-to-notebooks-and-other-sphinx-source-files)
using\n",
"\n",
" ```rst\n",
- " :ref:`/notebookname.ipynb`\n",
- " ```\n",
- "\n",
- " or\n",
- "\n",
- " ```rst\n",
- " :ref:`alternative link text </notebookname.ipynb>`\n",
+ " `some link text <notebookname.ipynb>`_\n",
" ```\n",
"\n",
"Sphinx raises a warning in case of orphaned documents:\n",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/nbsphinx-0.3.1/doc/prolog-and-epilog.ipynb
new/nbsphinx-0.3.2/doc/prolog-and-epilog.ipynb
--- old/nbsphinx-0.3.1/doc/prolog-and-epilog.ipynb 2018-01-16
11:44:50.000000000 +0100
+++ new/nbsphinx-0.3.2/doc/prolog-and-epilog.ipynb 2018-03-03
17:25:10.000000000 +0100
@@ -19,7 +19,7 @@
"This can be done with the configuration values `nbsphinx_prolog` and
`nbsphinx_epilog` in the file `conf.py`.\n",
"\n",
"The prolog and epilog strings can hold arbitrary
[reST](http://sphinx-doc.org/rest.html) markup.\n",
- "Particularly, the
[only](http://www.sphinx-doc.org/markup/misc.html#directive-only) and
[raw](http://docutils.sourceforge.net/docs/ref/rst/directives.html#raw-data-pass-through)
directives can be used to have different content for HTML and LaTeX output.\n",
+ "Particularly, the
[only](http://www.sphinx-doc.org/markup/misc.html#directive-only) and
[raw](https://docutils.readthedocs.io/en/sphinx-docs/ref/rst/directives.html#raw-data-pass-through)
directives can be used to have different content for HTML and LaTeX output.\n",
"\n",
"Those strings are also processed by the [Jinja2](http://jinja.pocoo.org/)
templating engine.\n",
"This means you can run Python-like code within those strings.\n",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/nbsphinx-0.3.1/doc/subdir/a-notebook-in-a-subdir.ipynb
new/nbsphinx-0.3.2/doc/subdir/a-notebook-in-a-subdir.ipynb
--- old/nbsphinx-0.3.1/doc/subdir/a-notebook-in-a-subdir.ipynb 2018-01-08
13:34:36.000000000 +0100
+++ new/nbsphinx-0.3.2/doc/subdir/a-notebook-in-a-subdir.ipynb 2018-03-19
09:36:55.000000000 +0100
@@ -42,6 +42,8 @@
"\n",
"</div>\n",
"\n",
+ "A link to a notebook in the same sub-directory: [link](toctree.ipynb).\n",
+ "\n",
"A link to a notebook in the parent directory:
[link](../markdown-cells.ipynb).\n",
"\n",
"A link to a local file: [link](../images/notebook_icon.png).\n",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/nbsphinx-0.3.1/doc/usage.ipynb
new/nbsphinx-0.3.2/doc/usage.ipynb
--- old/nbsphinx-0.3.1/doc/usage.ipynb 2018-01-16 11:44:50.000000000 +0100
+++ new/nbsphinx-0.3.2/doc/usage.ipynb 2018-03-10 11:02:18.000000000 +0100
@@ -298,8 +298,8 @@
"
[usage](https://github.com/spatialaudio/nbsphinx/compare/cloud-theme^...cloud-theme)\n",
"\n",
"*
[sphinx_py3doc_enhanced_theme](https://github.com/ionelmc/sphinx-py3doc-enhanced-theme):\n",
- " [example](http://nbsphinx.readthedocs.io/en/py3doc-enh-theme/),\n",
- "
[usage](https://github.com/spatialaudio/nbsphinx/compare/py3doc-enh-theme^...py3doc-enh-theme)\n",
+ " [example](http://nbsphinx.readthedocs.io/en/py3doc-enhanced-theme/),\n",
+ "
[usage](https://github.com/spatialaudio/nbsphinx/compare/py3doc-enhanced-theme^...py3doc-enhanced-theme)\n",
"\n",
"* [basicstrap](http://pythonhosted.org/sphinxjp.themes.basicstrap/):\n",
" [example](http://nbsphinx.readthedocs.io/en/basicstrap-theme/),\n",
@@ -329,7 +329,8 @@
"
[example](http://nbsphinx.readthedocs.io/en/jupyter-alabaster-theme/),\n",
"
[usage](https://github.com/spatialaudio/nbsphinx/compare/jupyter-alabaster-theme^...jupyter-alabaster-theme)\n",
"\n",
- "If you know of another Sphinx theme that should be included here, please
open an [issue on Github](https://github.com/spatialaudio/nbsphinx/issues)."
+ "If you know of another Sphinx theme that should be included here, please
open an [issue on Github](https://github.com/spatialaudio/nbsphinx/issues).\n",
+ "An overview of many more themes can be found at
https://sphinx-themes.org/."
]
},
{
@@ -361,7 +362,7 @@
"*
http://tillahoffmann.github.io/2017/04/17/versioning-jupyter-notebooks-with-git.html\n",
"*
http://timstaley.co.uk/posts/making-git-and-jupyter-notebooks-play-nice/\n",
"* http://pascalbugnion.net/blog/ipython-notebooks-and-git.html\n",
- "\n"
+ "* https://github.com/choldgraf/nbclean"
]
}
],
@@ -381,9 +382,9 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.6.4rc1"
+ "version": "3.6.4+"
}
},
"nbformat": 4,
- "nbformat_minor": 1
+ "nbformat_minor": 2
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/nbsphinx-0.3.1/src/nbsphinx.egg-info/PKG-INFO
new/nbsphinx-0.3.2/src/nbsphinx.egg-info/PKG-INFO
--- old/nbsphinx-0.3.1/src/nbsphinx.egg-info/PKG-INFO 2018-01-17
14:11:40.000000000 +0100
+++ new/nbsphinx-0.3.2/src/nbsphinx.egg-info/PKG-INFO 2018-03-28
13:46:05.000000000 +0200
@@ -1,12 +1,11 @@
Metadata-Version: 1.1
Name: nbsphinx
-Version: 0.3.1
+Version: 0.3.2
Summary: Jupyter Notebook Tools for Sphinx
Home-page: http://nbsphinx.readthedocs.io/
Author: Matthias Geier
Author-email: [email protected]
License: MIT
-Description-Content-Type: UNKNOWN
Description: Jupyter Notebook Tools for Sphinx
=================================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/nbsphinx-0.3.1/src/nbsphinx.py
new/nbsphinx-0.3.2/src/nbsphinx.py
--- old/nbsphinx-0.3.1/src/nbsphinx.py 2018-01-17 14:06:38.000000000 +0100
+++ new/nbsphinx-0.3.2/src/nbsphinx.py 2018-03-28 13:41:57.000000000 +0200
@@ -23,7 +23,7 @@
http://nbsphinx.rtfd.org/
"""
-__version__ = '0.3.1'
+__version__ = '0.3.2'
import copy
import json
@@ -616,7 +616,9 @@
def get_transforms(self):
"""List of transforms for documents parsed by this parser."""
return rst.Parser.get_transforms(self) + [
- ProcessLocalLinks, ReplaceAlertDivs]
+ CreateNotebookSectionAnchors,
+ ReplaceAlertDivs,
+ ]
def parse(self, inputstring, document):
"""Parse *inputstring*, write results to *document*.
@@ -1005,12 +1007,12 @@
"""Process links to local files.
Marks local files to be copied to the HTML output directory and
- turns links to local notebooks into ``:doc:``/``:ref:`` links.
+ turns links to source files into ``:doc:``/``:ref:`` links.
Links to subsections are possible with ``...#Subsection-Title``.
These links use the labels created by CreateSectionLabels.
- Links to subsections use ``:ref:``, links to whole notebooks use
+ Links to subsections use ``:ref:``, links to whole source files use
``:doc:``. Latter can be useful if you have an ``index.rst`` but
also want a distinct ``index.ipynb`` for use with Jupyter.
In this case you can use such a link in a notebook::
@@ -1023,42 +1025,58 @@
"""
- default_priority = 400 # Should probably be adjusted?
+ default_priority = 500 # After AnonymousHyperlinks (440)
- _subsection_re = re.compile(r'^(.+)(\..+#.+)$')
+ _subsection_re = re.compile(r'^([^#]+)((\.[^#]+)#.+)$')
def apply(self):
env = self.document.settings.env
for node in self.document.traverse(docutils.nodes.reference):
- uri = node.get('refuri', '')
- if not uri:
- continue # No URI (e.g. named reference)
- elif '://' in uri:
+ # NB: Anonymous hyperlinks must be already resolved at this point!
+ refuri = node.get('refuri')
+ if not refuri:
+ refname = node.get('refname')
+ if refname:
+ refid = self.document.nameids.get(refname)
+ else:
+ # NB: This can happen for anonymous hyperlinks
+ refid = node.get('refid')
+ target = self.document.ids.get(refid)
+ if not target:
+ continue # No corresponding target, Sphinx may warn later
+ refuri = target.get('refuri')
+ if not refuri:
+ continue # Target doesn't have URI
+
+ if '://' in refuri:
continue # Not a local link
- elif uri.startswith('#') or uri.startswith('mailto:'):
+ elif refuri.startswith('#') or refuri.startswith('mailto:'):
continue # Nothing to be done
- unquoted_uri = unquote(uri)
+ # NB: We look for "fragment identifier" before unquoting
+ fragment = self._subsection_re.match(refuri)
+ refuri = unquote(refuri)
for suffix in env.config.source_suffix:
- if unquoted_uri.lower().endswith(suffix.lower()):
- target = unquoted_uri[:-len(suffix)]
- break
- else:
- target = ''
-
- subsection_matches = self._subsection_re.match(uri)
- if target:
- target_ext = ''
- reftype = 'doc'
- refdomain = None
- elif subsection_matches:
- target = subsection_matches.group(1)
- target_ext = subsection_matches.group(2)
- reftype = 'ref'
- refdomain = 'std'
+ if fragment:
+ if fragment.group(3).lower() == suffix.lower():
+ target = unquote(fragment.group(1))
+ # NB: The "fragment identifier" is not unquoted
+ target_ext = fragment.group(2)
+ reftype = 'ref'
+ refdomain = 'std'
+ break
+ else:
+ if refuri.lower().endswith(suffix.lower()):
+ target = refuri[:-len(suffix)]
+ target_ext = ''
+ reftype = 'doc'
+ refdomain = None
+ break
else:
+ if fragment:
+ refuri = unquote(fragment.group(1)) + fragment.group(3)
file = os.path.normpath(
- os.path.join(os.path.dirname(env.docname), unquoted_uri))
+ os.path.join(os.path.dirname(env.docname), refuri))
if not os.path.isfile(os.path.join(env.srcdir, file)):
env.app.warn('file not found: {!r}'.format(file),
env.doc2path(env.docname))
@@ -1073,30 +1091,41 @@
env.nbsphinx_files.setdefault(env.docname, []).append(file)
continue # We're done here
- target_docname = os.path.normpath(
- os.path.join(os.path.dirname(env.docname), target))
+ target_docname = nbconvert.filters.posix_path(os.path.normpath(
+ os.path.join(os.path.dirname(env.docname), target)))
if target_docname in env.found_docs:
- if target_ext:
- target = target_docname + target_ext
- target = target.lower()
- target = '/' + target
+ reftarget = target_docname + target_ext
+ reftarget = '/' + reftarget.lower()
linktext = node.astext()
xref = sphinx.addnodes.pending_xref(
- reftype=reftype, reftarget=target, refdomain=refdomain,
+ reftype=reftype, reftarget=reftarget, refdomain=refdomain,
refwarn=True, refexplicit=True, refdoc=env.docname)
xref += docutils.nodes.Text(linktext, linktext)
node.replace_self(xref)
-class CreateSectionLabels(docutils.transforms.Transform):
- """Make labels for each document parsed by Sphinx, each section thereof,
- and each Sphinx domain object.
-
- These labels are referenced in ProcessLocalLinks.
+class CreateNotebookSectionAnchors(docutils.transforms.Transform):
+ """Create section anchors for Jupyter notebooks.
Note: Sphinx lower-cases the HTML section IDs, Jupyter doesn't.
- This transform creates labels in the Jupyter style for Jupyter
- notebooks, but keeps the Sphinx style for all other source files.
+ This transform creates anchors in the Jupyter style.
+
+ """
+
+ default_priority = 200 # Before CreateSectionLabels (250)
+
+ def apply(self):
+ for section in self.document.traverse(docutils.nodes.section):
+ title = section.children[0].astext()
+ link_id = title.replace(' ', '-')
+ section['ids'] = [link_id]
+
+
+class CreateSectionLabels(docutils.transforms.Transform):
+ """Make labels for each document and each section thereof.
+
+ These labels are referenced in ProcessLocalLinks but can also be
+ used manually with ``:ref:``.
"""
@@ -1110,11 +1139,7 @@
assert section.children
assert isinstance(section.children[0], docutils.nodes.title)
title = section.children[0].astext()
- if file_ext.lower() == '.ipynb':
- link_id = title.replace(' ', '-')
- section['ids'] = [link_id]
- else:
- link_id = section['ids'][0]
+ link_id = section['ids'][0]
label = '/' + env.docname + file_ext + '#' + link_id
label = label.lower()
env.domaindata['std']['labels'][label] = (
@@ -1131,7 +1156,15 @@
env.docname, '')
i_still_have_to_create_the_document_label = False
- # Create labels for domain-specific object signatures
+
+class CreateDomainObjectLabels(docutils.transforms.Transform):
+ """Create labels for domain-specific object signatures."""
+
+ default_priority = 250 # About the same as CreateSectionLabels
+
+ def apply(self):
+ env = self.document.settings.env
+ file_ext = os.path.splitext(env.doc2path(env.docname))[1]
for sig in self.document.traverse(sphinx.addnodes.desc_signature):
try:
title = sig['ids'][0]
@@ -1419,6 +1452,8 @@
app.connect('html-collect-pages', html_collect_pages)
app.connect('env-purge-doc', env_purge_doc)
app.add_transform(CreateSectionLabels)
+ app.add_transform(CreateDomainObjectLabels)
+ app.add_transform(ProcessLocalLinks)
# Make docutils' "code" directive (generated by markdown2rst/pandoc)
# behave like Sphinx's "code-block",