Nowadays, math elements (inline and block level equations) are
integrated into reST spec by default. But, in Sphinx, they are
not enabled by default. For this reason, users have to enable
one of math extensions even if target builder supports math
elements directly.
This change starts to enable them by default. As a first step,
this replaces math node and its structure by docutils based one.
This avoids warnings when find_catalog_source_files returns files
found in .git/ like:
WARNING: Start of line didn't match any expected keyword./refs/heads/freezed-library/colorsys.mo
WARNING: Problem on line 1: 0000000000000000000000000000000000000000 032a00a7391ec8a155bbc54d66ba72fb1b7bdbf1 Julien Palard <julien@palard.fr> 1521582790 +0100 branch: Created from freezed/library/colorsys.po
`.po` files can typically reside in .git/refs/heads/ if some branches
name end with .po, in which case they contain a SHA1, not
translations, leading to warnings.
For consistency, the `<object>` tag for the SVG output of a
inheritance-diagram should have the same `class="inheritance"` attribute
that the corresponding `<img>` tag for the PNG format has. This allows
to define the CSS attribute
object.inheritance {
max-width: 100%;
}
which for SVG (unlike PNG) actually works and makes sense.
Added a test for inheritance-diagrams in SVG.
The graphviz extension is modified to wrap the `<img>` and `<object>`
tags it creates for diagrams in the png and svg formats in an additional
`<div class="graphviz">...</div>` tag. This allows to apply additional
CSS styling to the the diagrams that cannot be applied to `<img>` and
`<object>` directly. Most notably,
div.graphviz {
overflow: auto;
}
would be a useful style that the standard themes might consider.
In any case, it would allow users to add custom CSS code to their
project that gets around the problems with inheritance-diagrams
discussed in https://github.com/sphinx-doc/sphinx/issues/4865
The tests for the `grahviz` and `inheritance_diagram` have been modified
to test for the presence of the additional `<div>` tag.
Closes#4865
Whilst working on the Reproducible Builds effort [0], we noticed
that sphinx could generate output that is not reproducible.
In particular, the rendering of `set` objects in default arguments
and elsewhere is currently non-determinstic. For example:
class A_Class(object):
a_set = {'a', 'b', 'c'}
Might be rendered as any of:
{'a', 'b', 'c'}
{'a', 'c', 'b'}
{'b', 'a', 'c'}
{'b', 'c', 'a'}
{'c', 'a', 'b'}
{'c', 'b', 'a'}
Patch attached that sorts the contents of sets whilst rendering.
This is parallel to the `dict` key sorting.
This was originally filed in Debian as #895553 [1].
[0] https://reproducible-builds.org/
[1] https://bugs.debian.org/895553
Signed-off-by: Chris Lamb <lamby@debian.org>