From 4937298ceb278769bae07601328618a28c0210a7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Thu, 22 Aug 2019 22:18:12 +0200 Subject: [PATCH] m.sphinx: implement intersphinx read support. Intersphinx write support next. --- doc/documentation/python.inv | Bin 0 -> 103307 bytes doc/plugins.rst | 1 - doc/plugins/sphinx.rst | 100 +++++++++++++++++-- plugins/m/sphinx.py | 169 +++++++++++++++++++++++++++++++- plugins/m/test/sphinx/page.html | 94 ++++++++++++++++++ plugins/m/test/sphinx/page.rst | 65 ++++++++++++ plugins/m/test/test_sphinx.py | 17 +++- site/pelicanconf.py | 3 + 8 files changed, 437 insertions(+), 12 deletions(-) create mode 100644 doc/documentation/python.inv create mode 100644 plugins/m/test/sphinx/page.html create mode 100644 plugins/m/test/sphinx/page.rst diff --git a/doc/documentation/python.inv b/doc/documentation/python.inv new file mode 100644 index 0000000000000000000000000000000000000000..a08de13a296e0baa81a7a3990b7b7fd34bfafdbb GIT binary patch literal 103307 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�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 literal 0 HcmV?d00001 diff --git a/doc/plugins.rst b/doc/plugins.rst index f5bf471c..00b82f7d 100644 --- a/doc/plugins.rst +++ b/doc/plugins.rst @@ -64,7 +64,6 @@ below or :gh:`grab the whole Git repository `: - :gh:`m.metadata ` :label-flat-primary:`pelican only` - :gh:`m.sphinx ` - :label-flat-warning:`python doc only` For the `Python doc theme <{filename}/documentation/python.rst>`_ it's enough to simply list them in :py:`PLUGINS`. For the `Doxygen theme <{filename}/documentation/doxygen.rst>`_, diff --git a/doc/plugins/sphinx.rst b/doc/plugins/sphinx.rst index 0b65ed0c..571771fa 100644 --- a/doc/plugins/sphinx.rst +++ b/doc/plugins/sphinx.rst @@ -48,27 +48,111 @@ using external files in a way similar to `Sphinx `_ `How to use`_ ============= +`Pelican`_ +---------- + +Download the `m/sphinx.py <{filename}/plugins.rst>`_ file, put it including the +``m/`` directory into one of your :py:`PLUGIN_PATHS` and add ``m.sphinx`` +package to your :py:`PLUGINS` in ``pelicanconf.py``. The plugin uses Sphinx +inventory files to get a list of linkable symbols and you need to provide +list of tuples containing tag file path, URL prefix, an optional list of +implicitly prepended paths and an optional list of CSS classes for each link in +:py:`M_SPHINX_INVENTORIES`. Every Sphinx-generated documentation contains an +``objects.inv`` file in its root directory (and the root directory is the URL +prefix as well), for example for Python 3 it's located at +https://docs.python.org/3/objects.inv. Download the files and specify path to +them and the URL they were downloaded from, for example: + +.. code:: python + + PLUGINS += ['m.sphinx'] + M_SPHINX_INVENTORIES = [ + ('sphinx/python.inv', 'https://docs.python.org/3/', ['xml.']), + ('sphinx/numpy.inv', 'https://docs.scipy.org/doc/numpy/', [], ['m-flat'])] + `Python doc theme`_ ------------------- -List the plugin in your :py:`PLUGINS`. +List the plugin in your :py:`PLUGINS`. The :py:`M_SPHINX_INVENTORIES` +configuration option is interpreted the same way as in case of the `Pelican`_ +plugin. .. code:: py PLUGINS += ['m.sphinx'] + M_SPHINX_INVENTORIES = [...] + +`Links to external Sphinx documentation`_ +========================================= + +Use the :rst:`:ref:` interpreted text role for linking to symbols defined in +:py:`M_SPHINX_INVENTORIES`. In order to save you some typing, the leading +name(s) mentioned there can be omitted when linking to given symbol. + +Link text is equal to link target unless the target provides its own title +(such as documentation pages), function links have ``()`` appended to make it +clear it's a function. It's possible to specify custom link title using the +:rst:`:ref:`link title ``` syntax. If a symbol can't be found, a +warning is printed to output and link target is rendered in a monospace font +(or, if custom link title is specified, just the title is rendered, as normal +text). You can append ``#anchor`` to ``link-target`` to link to anchors that +are not present in the inventory file, the same works for query parameters +starting with ``?``. Adding custom CSS classes can be done by deriving the role +and adding the :rst:`:class:` option. + +Since there's many possible targets and there can be conflicting names, +sometimes it's desirable to disambiguate. If you suffix the link target with +``()``, the plugin will restrict the name search to just functions. You can +also restrict the search to a particular type by prefixing the target with a +concrete target name and a colon --- for example, +:rst:`:ref:`std:doc:using/cmdline`` will link to the ``using/cmdline`` page of +standard documentation. + +The :rst:`:ref:` a good candidate for a `default role `_ +--- setting it using :rst:`.. default-role::` will then make it accessible +using plain backticks: + +.. code-figure:: + + .. code:: rst + + .. default-role:: ref + + .. role:: ref-flat(ref) + :class: m-flat + + - Function link: :ref:`open()` + - Class link (with the ``xml.`` prefix omitted): :ref:`etree.ElementTree` + - Page link: :ref:`std:doc:using/cmdline` + - :ref:`Custom link title ` + - Flat link: :ref-flat:`os.path.join()` + - Link using a default role: `str.partition()` + + .. default-role:: ref + + .. role:: ref-flat(ref) + :class: m-flat + + - Function link: :ref:`open()` + - Class link (with the ``xml.`` prefix omitted): :ref:`etree.ElementTree` + - Page link: :ref:`std:doc:using/cmdline` + - :ref:`Custom link title ` + - Flat link: :ref-flat:`os.path.join()` + - Link using a default role: `str.partition()` -.. note-info:: +.. note-success:: - This plugin is available only for the `Python doc theme <{filename}/documentation/python.rst>`_, - not usable for Pelican or Doxygen themes. + For linking to Doxygen documentation, a similar functionality is provided + by the `m.dox <{filename}/plugins/links.rst#doxygen-documentation>`_ + plugin. `Module, class, enum, function, property and data docs`_ ======================================================== -The :rst:`.. py:module::`, :rst:`.. py:class::`, :rst:`.. py:enum::`, -:rst:`.. py:function::`, :rst:`.. py:property::` and :rst:`.. py:data::` -directives provide a way to supply module, class, enum, function / method, -property and data documentation content. +In the Python doc theme, the :rst:`.. py:module::`, :rst:`.. py:class::`, +:rst:`.. py:enum::`, :rst:`.. py:function::`, :rst:`.. py:property::` and +:rst:`.. py:data::` directives provide a way to supply module, class, enum, +function / method, property and data documentation content. Directive option is the name to document, directive contents are the actual contents; in addition all the directives have the :py:`:summary:` option that diff --git a/plugins/m/sphinx.py b/plugins/m/sphinx.py index 56a594e7..3f3555b6 100644 --- a/plugins/m/sphinx.py +++ b/plugins/m/sphinx.py @@ -22,8 +22,20 @@ # DEALINGS IN THE SOFTWARE. # +import logging +import os +import re +from typing import Dict +from urllib.parse import urljoin +import zlib + +from docutils import nodes, utils from docutils.parsers import rst from docutils.parsers.rst import directives +from docutils.parsers.rst.roles import set_classes +from docutils.parsers.rst.states import Inliner + +from pelican import signals module_doc_output = None class_doc_output = None @@ -126,7 +138,148 @@ class PyData(rst.Directive): } return [] -def register_mcss(module_doc_contents, class_doc_contents, enum_doc_contents, function_doc_contents, property_doc_contents, data_doc_contents, **kwargs): +# Modified from abbr / gh / gl / ... to add support for queries and hashes +link_regexp = re.compile(r'(?P.*) <(?P<link>[^?#]+)(?P<hash>[?#].+)?>') + +def parse_link(text): + link = utils.unescape(text) + m = link_regexp.match(link) + if m: + title, link, hash = m.group('title', 'link', 'hash') + if not hash: hash = '' # it's None otherwise + else: + title, hash = '', '' + + return title, link, hash + +intersphinx_inventory = {} +intersphinx_name_prefixes = [] + +# Basically a copy of sphinx.util.inventory.InventoryFile.load_v2. There's no +# documentation for this, it seems. +def parse_intersphinx_inventory(file, base_url, inventory, css_classes): + # Parse the header, uncompressed + inventory_version = file.readline().rstrip() + if inventory_version != b'# Sphinx inventory version 2': + raise ValueError(f"Unsupported inventory version header: {inventory_version}") # pragma: no cover + # those two are not used at the moment, just for completeness + project = file.readline().rstrip()[11:] + version = file.readline().rstrip()[11:] + line = file.readline() + if b'zlib' not in line: + raise ValueError(f"invalid inventory header (not compressed): {line}") # pragma: no cover + + # Decompress the rest. Again mostly a copy of the sphinx code. + for line in zlib.decompress(file.read()).decode('utf-8').splitlines(): + m = re.match(r'(?x)(.+?)\s+(\S*:\S*)\s+(-?\d+)\s+(\S+)\s+(.*)', + line.rstrip()) + if not m: # pragma: no cover + print(f"wait what is this line?! {line}") + continue + # What the F is prio for + name, type, prio, location, title = m.groups() + + # What is this?! + if location.endswith('$'): location = location[:-1] + name + + # The original code `continue`s in this case. I'm asserting. Fix your + # docs. + assert not(type == 'py:module' and type in inventory and name in inventory[type]), "Well dang, we hit that bug in 1.1 that I didn't want to work around" # pragma: no cover + + # Prepend base URL and add to the inventory + inventory.setdefault(type, {})[name] = (urljoin(base_url, location), title, css_classes) + +def parse_intersphinx_inventories(input, inventories): + global intersphinx_inventory, intersphinx_name_prefixes + intersphinx_inventory = {} + intersphinx_name_prefixes = [''] + + for f in inventories: + inventory, base_url = f[:2] + prefixes = f[2] if len(f) > 2 else [] + css_classes = f[3] if len(f) > 3 else [] + + intersphinx_name_prefixes += prefixes + with open(os.path.join(input, inventory), 'rb') as file: + parse_intersphinx_inventory(file, base_url, intersphinx_inventory, css_classes) + +# Matches e.g. py:function in py:function:open +_type_prefix_re = re.compile(r'([a-z0-9]{,3}:[a-z0-9]{3,}):') +_function_types = ['py:function', 'py:classmethod', 'py:staticmethod', 'py:method', 'c:function'] + +def ref(name, rawtext, text, lineno, inliner: Inliner, options={}, content=[]): + title, target, hash = parse_link(text) + + # Otherwise adding classes to the options behaves globally (uh?) + _options = dict(options) + set_classes(_options) + # Avoid assert on adding to undefined member later + if 'classes' not in _options: _options['classes'] = [] + + # Iterate through all prefixes, try to find the name + global intersphinx_inventory, intersphinx_name_prefixes + for prefix in intersphinx_name_prefixes: + found = None + + # If the target is prefixed with a type, try looking up that type + # directly. The implicit link title is then without the type. + m = _type_prefix_re.match(target) + if m: + type = m.group(1) + prefixed = prefix + target[len(type) + 1:] + # ALlow trailing () on functions here as well + if prefixed.endswith('()') and type in _function_types: + prefixed = prefixed[:-2] + if type in intersphinx_inventory and prefixed in intersphinx_inventory[type]: + target = target[len(type) + 1:] + found = type, intersphinx_inventory[m.group(1)][prefixed] + + prefixed = prefix + target + + # If the target looks like a function, look only in functions and strip + # the trailing () as the inventory doesn't have that + if not found and prefixed.endswith('()'): + prefixed = prefixed[:-2] + for type in _function_types: + if type in intersphinx_inventory and prefixed in intersphinx_inventory[type]: + found = type, intersphinx_inventory[type][prefixed] + break + + # Iterate through whitelisted types otherwise. Skipping + # 'std:pdbcommand', 'std:cmdoption', 'std:term', 'std:label', + # 'std:opcode', 'std:envvar', 'std:token', 'std:doc', 'std:2to3fixer' + # and unknown domains such as c++ for now as I'm unsure about potential + # name clashes. + if not found: + for type in ['py:exception', 'py:attribute', 'py:method', 'py:data', 'py:module', 'py:function', 'py:class', 'py:classmethod', 'py:staticmethod', 'c:var', 'c:type', 'c:function', 'c:member', 'c:macro']: + if type in intersphinx_inventory and prefixed in intersphinx_inventory[type]: + found = type, intersphinx_inventory[type][prefixed] + + if found: + url, link_title, css_classes = found[1] + if title: + use_title = title + elif link_title != '-': + use_title = link_title + else: + use_title = target + # Add () to function refs + if found[0] in _function_types and not target.endswith('()'): + use_title += '()' + + _options['classes'] += css_classes + node = nodes.reference(rawtext, use_title, refuri=url + hash, **_options) + return [node], [] + + if title: + logging.warning("Sphinx symbol `{}` not found, rendering just link title".format(target)) + node = nodes.inline(rawtext, title, **_options) + else: + logging.warning("Sphinx symbol `{}` not found, rendering as monospace".format(target)) + node = nodes.literal(rawtext, target, **_options) + return [node], [] + +def register_mcss(mcss_settings, module_doc_contents, class_doc_contents, enum_doc_contents, function_doc_contents, property_doc_contents, data_doc_contents, **kwargs): global module_doc_output, class_doc_output, enum_doc_output, function_doc_output, property_doc_output, data_doc_output module_doc_output = module_doc_contents class_doc_output = class_doc_contents @@ -135,6 +288,9 @@ def register_mcss(module_doc_contents, class_doc_contents, enum_doc_contents, fu property_doc_output = property_doc_contents data_doc_output = data_doc_contents + parse_intersphinx_inventories(input=mcss_settings['INPUT'], + inventories=mcss_settings.get('M_SPHINX_INVENTORIES', [])) + rst.directives.register_directive('py:module', PyModule) rst.directives.register_directive('py:class', PyClass) rst.directives.register_directive('py:enum', PyEnum) @@ -142,5 +298,14 @@ def register_mcss(module_doc_contents, class_doc_contents, enum_doc_contents, fu rst.directives.register_directive('py:property', PyProperty) rst.directives.register_directive('py:data', PyData) + rst.roles.register_local_role('ref', ref) + +def _pelican_configure(pelicanobj): + # For backwards compatibility, the input directory is pelican's CWD + parse_intersphinx_inventories(input=os.getcwd(), + inventories=pelicanobj.settings.get('M_SPHINX_INVENTORIES', [])) + def register(): # for Pelican - assert not "This plugin is for the m.css Doc theme only" # pragma: no cover + rst.roles.register_local_role('ref', ref) + + signals.initialized.connect(_pelican_configure) diff --git a/plugins/m/test/sphinx/page.html b/plugins/m/test/sphinx/page.html new file mode 100644 index 00000000..a8134e20 --- /dev/null +++ b/plugins/m/test/sphinx/page.html @@ -0,0 +1,94 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="UTF-8" /> + <title>m.sphinx | A Pelican Blog + + + + + + +
+
+
+
+
+
+

m.sphinx

+ + +

These should produce warnings:

+
    +
  • Link to nonexistent name will be rendered as code: nonexistent()
  • +
  • Link to nonexistent name with custom title will be just text
  • +
+ +
+
+
+
+
+ + \ No newline at end of file diff --git a/plugins/m/test/sphinx/page.rst b/plugins/m/test/sphinx/page.rst new file mode 100644 index 00000000..0ef1a044 --- /dev/null +++ b/plugins/m/test/sphinx/page.rst @@ -0,0 +1,65 @@ +m.sphinx +######## + +.. role:: ref-small(ref) + :class: m-text m-small + +- Module link: + + - :ref:`argparse` + - explicit type: :ref:`py:module:argparse` + +- Function link: + + - :ref:`open()` + - without a ``()``: :ref:`open` + - explicit type: :ref:`py:function:open()`, + - explicit without a ``()``: :ref:`py:function:open` + +- Class link: + + - :ref:`xml.etree.ElementTree.Element` + - explicit type: :ref:`py:class:xml.etree.ElementTree.Element` + +- Classmethod link: + + - :ref:`bytearray.fromhex()` + - without a ``()``: :ref:`bytearray.fromhex` + - explicit type: :ref:`py:classmethod:bytearray.fromhex()` + - explicit without a ``()``: :ref:`py:classmethod:bytearray.fromhex` + +- Staticmethod link: + + - :ref:`bytes.maketrans()` + - without a ``()``: :ref:`bytes.maketrans` + - explicit type :ref:`py:staticmethod:bytes.maketrans()` + - explicit without a ``()``: :ref:`py:staticmethod:bytes.maketrans` + +- Method link: + + - :ref:`str.rstrip()` + - without a ``()``: :ref:`str.rstrip` + - explicit type: :ref:`py:method:str.rstrip()` + - explicit type without a ``()``: :ref:`py:method:str.rstrip()` + +- Property link: + + - :ref:`datetime.date.year` + - explicit type :ref:`py:attribute:datetime.date.year` + +- Data link: + + - :ref:`re.X` + - explicit type: :ref:`py:data:re.X` + +- Explicitly typed page link with automatic title: :ref:`std:doc:using/cmdline` +- :ref:`Page link with custom link title `, + :ref:`Function link with a custom title ` +- Custom CSS class: :ref-small:`str.join()` +- Omitting a prefix: :ref:`etree.ElementTree`, :ref:`ElementTree` +- Custom query string: :ref:`os.path ` + +These should produce warnings: + +- Link to nonexistent name will be rendered as code: :ref:`nonexistent()` +- :ref:`Link to nonexistent name with custom title will be just text ` diff --git a/plugins/m/test/test_sphinx.py b/plugins/m/test/test_sphinx.py index 5a5e8fa5..9b868a80 100644 --- a/plugins/m/test/test_sphinx.py +++ b/plugins/m/test/test_sphinx.py @@ -22,4 +22,19 @@ # DEALINGS IN THE SOFTWARE. # -# This module gets tested inside documentation/test_python/. +# The directives are only for the Python theme and get tested inside it + +from . import PelicanPluginTestCase + +class Sphinx(PelicanPluginTestCase): + def __init__(self, *args, **kwargs): + super().__init__(__file__, '', *args, **kwargs) + + def test(self): + self.run_pelican({ + 'PLUGINS': ['m.htmlsanity', 'm.sphinx'], + 'M_SPHINX_INVENTORIES': [ + ('../doc/documentation/python.inv', 'https://docs.python.org/3/', ['xml.', 'xml.etree.'], ['m-flat'])] + }) + + self.assertEqual(*self.actual_expected_contents('page.html')) diff --git a/site/pelicanconf.py b/site/pelicanconf.py index a1074171..19e9408a 100644 --- a/site/pelicanconf.py +++ b/site/pelicanconf.py @@ -158,6 +158,7 @@ PLUGINS = ['m.abbr', 'm.math', 'm.metadata', 'm.plots', + 'm.sphinx', 'm.qr', 'm.vk'] @@ -179,6 +180,8 @@ M_HTMLSANITY_SMART_QUOTES = True M_HTMLSANITY_HYPHENATION = True M_DOX_TAGFILES = [ ('../doc/documentation/corrade.tag', 'https://doc.magnum.graphics/corrade/', ['Corrade::'])] +M_SPHINX_INVENTORIES = [ + ('../doc/documentation/python.inv', 'https://docs.python.org/3/', ['xml.'])] if not shutil.which('latex'): logging.warning("LaTeX not found, fallback to rendering math as code") -- 2.30.2