chiark / gitweb /
Vladimír Vondruš [Wed, 17 Jul 2019 18:14:05 +0000 (20:14 +0200)]
documentation/python: minor cleanup.
Vladimír Vondruš [Wed, 17 Jul 2019 18:11:57 +0000 (20:11 +0200)]
documentation/python: pass the whole entry to documentation extractors.
Compared to basically unpacking the entry and passing all of it as
separate arguments this makes it easier to get the page URL and in the
future also other stuff.
Vladimír Vondruš [Wed, 17 Jul 2019 17:55:40 +0000 (19:55 +0200)]
documentation/python: save URLs of crawled classes, modules and pages.
Makes link creation much simpler later.
Vladimír Vondruš [Wed, 17 Jul 2019 16:44:32 +0000 (18:44 +0200)]
documentation: search data format version 2.
Instead of having a hardcoded mapping from flags to type names and
associated classes on the JavaScript side, which was very C++-specific,
the new format now moves this mapping directly into the search data.
It's a new section at the end, for each type index containing CSS class
ID (which is still hardcoded, but that's not language specific anyway)
and an UTF-8 name that's displayed in the label. For C++ this makes the
search data file size 107 bytes larger, which isn't significant by any
means.
Vladimír Vondruš [Wed, 17 Jul 2019 16:51:35 +0000 (18:51 +0200)]
documentation: remove dead code.
Vladimír Vondruš [Wed, 17 Jul 2019 16:39:25 +0000 (18:39 +0200)]
documentation: ensure the extra arguments are always passed as keywords.
Vladimír Vondruš [Wed, 17 Jul 2019 16:33:41 +0000 (18:33 +0200)]
documentation: encode format version into search data filename.
The browser having a stale data (and a stale script) cached is okay-ish
as things still mostly work, but having a stale data with a script
expecting a new version or vice versa is *bad*, so prevent that by
having the script always download file of the exact version it expects.
This is a bit less useful with docs served from local filesystem (as
the filename is encoded in HTML pages rather than in the script), but
there I don't assume the browser is doing much caching so that should be
okay.
Vladimír Vondruš [Wed, 17 Jul 2019 18:46:58 +0000 (20:46 +0200)]
documentation: add sanity checks for always-defined template variables.
Vladimír Vondruš [Sun, 14 Jul 2019 23:16:17 +0000 (01:16 +0200)]
documentation: make the search test data diffable.
Vladimír Vondruš [Sun, 14 Jul 2019 23:14:36 +0000 (01:14 +0200)]
documentation: first step to make the result types backend-specific.
The type is now a part of the doxygen script and is added as plain bits
to ResultFlag. Next step is encoding the type mapping to the search data
and then reading that back in the JS frontend.
Vladimír Vondruš [Sun, 14 Jul 2019 22:17:54 +0000 (00:17 +0200)]
documentation/doxygen: update JS tests and ensure it doesn't happen again.
Ugh. The flags got reordered in
1a10e178fbf4d370ba1ae3026e5492c757cfef2e
(HALF A YEAR AGO!) but the JS test data were never adapted to that, so
the JS test was still working with the old stuff.
The Travis CI job was modified to execute the python script during
the JS test run and verify there's no git diff after that.
Vladimír Vondruš [Sun, 14 Jul 2019 21:57:19 +0000 (23:57 +0200)]
documentation: move search-related stuff into a dedicated module.
So it can be used by the Python doc generator as well. Wanted to put it
into __init__.py, but Guido disagreed with that, so I can't.
Vladimír Vondruš [Sun, 14 Jul 2019 21:45:03 +0000 (23:45 +0200)]
m.math, documentation: update math support for dvisvgm 2.6.3.
It reorders all XML attributes for no reason. Ugh I hate this.
Vladimír Vondruš [Sun, 14 Jul 2019 21:42:23 +0000 (23:42 +0200)]
m.math: ensure cache file is reset when cache is not used.
Otherwise tests run in batch can sporadically fail.
Vladimír Vondruš [Sun, 14 Jul 2019 20:39:52 +0000 (22:39 +0200)]
m.qr: patch the output to be consistent between Travis any my Python 3.7.
Vladimír Vondruš [Sun, 14 Jul 2019 19:36:05 +0000 (21:36 +0200)]
package/ci: build for Python 3.7 and pybind 2.3 as well, drop 3.4 build.
Vladimír Vondruš [Sun, 14 Jul 2019 19:32:26 +0000 (21:32 +0200)]
Drop Python 3.4 support.
It was EOL'd in March 2019 and I don't want to bother with it anymore.
Vladimír Vondruš [Sun, 14 Jul 2019 16:48:06 +0000 (18:48 +0200)]
documentation/python: handle also getset descriptors.
Ugh enough with those weird things already.
Vladimír Vondruš [Sun, 14 Jul 2019 15:49:39 +0000 (17:49 +0200)]
documentation/python: properly handle inspection of slot properties.
There's no fget/fset/fdel for those and we also can't __doc__ them.
Vladimír Vondruš [Sun, 14 Jul 2019 15:39:58 +0000 (17:39 +0200)]
documentation/python: reduce annotation test to just parsing, not links.
Type links are tested in test_inspect.TypeLinks.
Vladimír Vondruš [Sun, 14 Jul 2019 13:49:48 +0000 (15:49 +0200)]
documentation/python: reduce needed test boilerplate.
Will do the same for doxygen, plugin and theme tests too, but later.
Vladimír Vondruš [Sun, 14 Jul 2019 12:54:36 +0000 (14:54 +0200)]
documentation/python: warn when a type link should (but isn't) resolved.
Could help with figuring out what types were accidentally omitted from
the docs.
Vladimír Vondruš [Sun, 14 Jul 2019 12:13:23 +0000 (14:13 +0200)]
documentation/python: attrs does bad things and I'm not happy about that.
Vladimír Vondruš [Sun, 14 Jul 2019 12:02:24 +0000 (14:02 +0200)]
documentation/python: further improve type annotation support.
This is an awful mess, ffs. Like if nobody designed this with
introspection in mind.
Vladimír Vondruš [Sun, 14 Jul 2019 11:59:28 +0000 (13:59 +0200)]
documentation/python: minor clarification in a test.
Vladimír Vondruš [Sun, 14 Jul 2019 10:51:25 +0000 (12:51 +0200)]
documentation/python: properly handle invalid annotation types.
Such as using a tuple instead of Tuple or putting a function there
instead of a type.
Vladimír Vondruš [Sun, 14 Jul 2019 10:01:38 +0000 (12:01 +0200)]
documentation/python: properly handle nested pybind signature parse errors.
I still feel uneasy throwing exceptions. But eh.
Vladimír Vondruš [Sun, 14 Jul 2019 09:34:52 +0000 (11:34 +0200)]
documentation/python: properly parse pybind's Callable annotations.
Vladimír Vondruš [Sat, 13 Jul 2019 20:08:13 +0000 (22:08 +0200)]
documentation/python: clean up redundant imports.
Vladimír Vondruš [Sat, 13 Jul 2019 20:07:49 +0000 (22:07 +0200)]
documentation/python: test pybind readonly properties, for completeness.
Vladimír Vondruš [Sat, 13 Jul 2019 20:04:17 +0000 (22:04 +0200)]
documentation/python: support write-only properties.
Supported by Python through a slightly crazy syntax and in pybind11
since 2.3.
Vladimír Vondruš [Sat, 13 Jul 2019 17:39:17 +0000 (19:39 +0200)]
documentation/python: unify and improve formatting of values.
Such as function default values or data values. Mainly done in order to
turn enum values into links. Also ensuring the value is always HTML
escaped.
Vladimír Vondruš [Sat, 13 Jul 2019 16:30:26 +0000 (18:30 +0200)]
documentation/python: inspect pybind type __annotations__ carefully.
The typing.get_type_annotations() crashes with a KeyError there because
there's no pybind11_builtins module. I don't know and don't want to know
what's happening there.
Vladimír Vondruš [Sat, 13 Jul 2019 15:52:33 +0000 (17:52 +0200)]
documentation/python: allow relative links in top navbar.
For (local) Magnum Python docs I need to link to C++ docs, which are in
../../../bla/index.html.
Vladimír Vondruš [Sat, 13 Jul 2019 15:52:16 +0000 (17:52 +0200)]
documentation/python: doc++
Vladimír Vondruš [Sat, 13 Jul 2019 15:48:36 +0000 (17:48 +0200)]
documentation/python: better name for a function.
Vladimír Vondruš [Sat, 13 Jul 2019 15:46:07 +0000 (17:46 +0200)]
documentation/python: crawl also enum values.
No functional change, just a preparation for linking to enum values.
Vladimír Vondruš [Sat, 13 Jul 2019 14:10:43 +0000 (16:10 +0200)]
documentation/python: stay compatible with Python 3.6.
Vladimír Vondruš [Fri, 12 Jul 2019 20:18:13 +0000 (22:18 +0200)]
documentation/python: robust linking also for nested/generic types.
Wow of course this again took me ten times more than originally
anticipated, because there are NO FREAKING DOCS AT ALL for the typing
module.
The major advantage of the new (hard to implement) approach is that
string annotations are parsed and dereferenced correctly as well. That
also means the previous way I did them (fully qualified names) was
mostly wrong.
Vladimír Vondruš [Fri, 12 Jul 2019 12:01:19 +0000 (14:01 +0200)]
documentation/python: test link formatting also for type links.
Vladimír Vondruš [Fri, 12 Jul 2019 10:36:09 +0000 (12:36 +0200)]
documentation/python: implement linking for types.
Vladimír Vondruš [Thu, 11 Jul 2019 23:03:42 +0000 (01:03 +0200)]
documentation/python: properly handle recursively imported modules.
Basically converting the crawl to be breadth-first instead of
depth-first and maintaining a set of crawled modules to ensure they're
never visited again.
This could happen with classes as well, but it's rarer -- one would need
to add it to __all__ twice (or once and then it gets discovered
implicitly) etc. For now I'm simply asserting, will revisit in case it
proves to be an actual problem.
Vladimír Vondruš [Wed, 10 Jul 2019 21:39:40 +0000 (23:39 +0200)]
documentation/python: minor code reorganization.
Vladimír Vondruš [Wed, 10 Jul 2019 21:31:27 +0000 (23:31 +0200)]
documentation/python: inline functions that are used in a single place.
Those are the ugliest, ha. Keep them together.
Vladimír Vondruš [Wed, 10 Jul 2019 14:08:32 +0000 (16:08 +0200)]
documentation/python: format also anchors for class/module members.
First step towards symbol crosslinking.
Vladimír Vondruš [Wed, 10 Jul 2019 20:45:15 +0000 (22:45 +0200)]
documentation/python: make it possible to configure how URLs look.
Well, this is a bit overdone preparation for links to actual class /
module members, but can't hurt, no?? :D
Vladimír Vondruš [Wed, 10 Jul 2019 20:29:54 +0000 (22:29 +0200)]
documentation/python: crawl the names first to build a name map.
And then render eeach page non-recursively. That helps with
deduplicating the code (although the result is more code now), memory
usage (we're freeing everything before continuing to render another
page) and prepares the codebase for crosslinking and search.
Vladimír Vondruš [Sun, 14 Jul 2019 17:10:48 +0000 (19:10 +0200)]
pelican-theme: nope, this PR is still not merged yet.
Vladimír Vondruš [Tue, 9 Jul 2019 11:16:40 +0000 (13:16 +0200)]
documentation/python: adapt to a minor change in pybind 2.3 signatures.
Cris Luengo [Tue, 9 Jul 2019 11:14:52 +0000 (13:14 +0200)]
documentation/doxygen: fixed link to defines section.
Vanilla HTML Doxygen output uses #define-members and that's what was
used to define the section ID, however the link to it was by mistake
just #defines.
Vladimír Vondruš [Sun, 7 Jul 2019 20:29:42 +0000 (22:29 +0200)]
package/ci: use matplotlib 3.0 on the CI.
Vladimír Vondruš [Sun, 7 Jul 2019 20:28:19 +0000 (22:28 +0200)]
m.plots: adapt for matplotlib 3.0.
3.0 uses a HTTPS URL in the SVG preamble, so the regex needed updating.
That's it. And I was putting this off for over a year, heh.
Well, actually now I have THREE DIFFERENT OUTPUTS to test for --
Python 3.5 and older has slightly different number rounding, while
matplotlib 3.1 adds a CSS property that 3.0 didn't have. Yay this is
annoying as hell.
Vladimír Vondruš [Sun, 7 Jul 2019 20:13:33 +0000 (22:13 +0200)]
package/ci: use latest Jinja on the CI.
Should work again.
Vladimír Vondruš [Sun, 7 Jul 2019 20:12:13 +0000 (22:12 +0200)]
Doc++
Vladimír Vondruš [Sun, 7 Jul 2019 19:34:50 +0000 (21:34 +0200)]
Trim extra trailing newlines before passing it to Jinja's indent().
In Jinja 2.9 indent() unconditionally stripped the trailing newline, in
2.10 it preserves it. That ... actually makes sense, so we have to
adapt.
Vladimír Vondruš [Sun, 7 Jul 2019 19:23:35 +0000 (21:23 +0200)]
m.htmlsanity: add a rtrim Jinja2 filter.
Argh, I wanted to update to Jina 2.10 without workarounds, but it's not
possible.
Cris Luengo [Wed, 1 May 2019 22:13:52 +0000 (16:13 -0600)]
css: allow customizing text line height.
Cris Luengo [Wed, 1 May 2019 22:16:11 +0000 (16:16 -0600)]
css: allow variables to be defined in terms of other variables.
Vladimír Vondruš [Sun, 7 Jul 2019 16:44:05 +0000 (18:44 +0200)]
Revert "documentation: fix for duplicate detailed description issue."
Wait no, this was a total brainfart. Things continue to work even
without those (and the new branches are OTOH never actually executed).
This partially reverts commit
d1961231589a1cdf7a742d1f55a8daaf4533dfd6.
Cris Luengo [Wed, 8 May 2019 04:09:00 +0000 (22:09 -0600)]
documentation: allow tests to run under MacOS and Windows.
Cris Luengo [Wed, 8 May 2019 04:18:00 +0000 (22:18 -0600)]
documentation: these two also had duplicate detailed description issues.
Cris Luengo [Tue, 7 May 2019 05:43:38 +0000 (23:43 -0600)]
documentation: fix for duplicate detailed description issue.
Also fixes issue with group (module) defined across two files.
Vladimír Vondruš [Sun, 7 Jul 2019 16:27:25 +0000 (18:27 +0200)]
documentation/doxygen: defines *can* appear twice, too.
In a group and in file docs. So accomodate for that.
Cris Luengo [Tue, 7 May 2019 05:54:19 +0000 (23:54 -0600)]
documentation: test issues with duplicate detailed descriptions.
Also shows issues that come up when groups (modules) are spread over
multiple files.
Vladimír Vondruš [Sun, 7 Jul 2019 12:22:04 +0000 (14:22 +0200)]
Updated CREDITS.rst.
Vladimír Vondruš [Sun, 7 Jul 2019 12:20:11 +0000 (14:20 +0200)]
documentation/python: test for external docs that get unused.
Those should print a warning and not affect the output in any way.
Vladimír Vondruš [Sun, 7 Jul 2019 13:05:33 +0000 (15:05 +0200)]
documentation/doxygen: "improve" empty page filtering.
By throwing more mud at the wall. Ugh. Wow doxygen, why is everything
so damn hard.
Cris Luengo [Tue, 7 May 2019 04:20:40 +0000 (22:20 -0600)]
documentation: fix for empty pages issue.
Cris Luengo [Tue, 7 May 2019 05:13:58 +0000 (23:13 -0600)]
documentation: test that shows empty page issue.
Vladimír Vondruš [Sun, 7 Jul 2019 11:21:16 +0000 (13:21 +0200)]
documentation: reword the footer.
Neither Doxygen nor m.css is a human capable of writing the docs.
Vladimír Vondruš [Sun, 7 Jul 2019 11:18:17 +0000 (13:18 +0200)]
m.plots: support stacked values.
Vladimír Vondruš [Sun, 7 Jul 2019 10:53:54 +0000 (12:53 +0200)]
documentation/python: Häagen-Dazs?!
Vladimír Vondruš [Sun, 7 Jul 2019 10:49:59 +0000 (12:49 +0200)]
documentation/python: properly extract images with complex paths.
The paths are patched to contains just a filename so things like
../../image.png work and don't lead to unreferenceable images. This is
similar to what Doxygen does even though I don't really like that -- it
could lead to conflicting files if there are files with the same
basename.
Vladimír Vondruš [Sun, 7 Jul 2019 09:39:15 +0000 (11:39 +0200)]
plugins: make latex2svg work at least partially with dvisvgm 1.9.2.
Vladimír Vondruš [Tue, 21 May 2019 22:08:19 +0000 (00:08 +0200)]
documentation/python: don't ignore pybind submodules inside packages.
This is extra brittle. Hahah why this has to be so damn complex.
Vladimír Vondruš [Tue, 21 May 2019 18:04:10 +0000 (20:04 +0200)]
documentation/python: use external summary only if it's actually there.
Vladimír Vondruš [Tue, 21 May 2019 14:35:24 +0000 (16:35 +0200)]
m.dot: fix skip message in the test.
Vladimír Vondruš [Sun, 12 May 2019 21:01:10 +0000 (23:01 +0200)]
documentation/python: add support for pre-page and post-run hooks.
Vladimír Vondruš [Sun, 12 May 2019 20:30:56 +0000 (22:30 +0200)]
documentation/python: different order of rendering nested pages.
This should be better for memory usage.
Vladimír Vondruš [Sun, 12 May 2019 20:08:44 +0000 (22:08 +0200)]
m.qr: new plugin for QR code rendering.
Vladimír Vondruš [Sun, 12 May 2019 17:33:19 +0000 (19:33 +0200)]
Doc++
Vladimír Vondruš [Sun, 12 May 2019 17:33:00 +0000 (19:33 +0200)]
doc: link to the Magnum Python docs.
Vladimír Vondruš [Sun, 12 May 2019 17:32:24 +0000 (19:32 +0200)]
documentation/python: copy all referenced images as well.
Vladimír Vondruš [Sun, 5 May 2019 16:10:49 +0000 (18:10 +0200)]
m.sphinx: new plugin for Python docs via external files.
Provides a way to document modules, classes and data in the Python doc
theme.
Vladimír Vondruš [Sun, 12 May 2019 13:58:11 +0000 (15:58 +0200)]
plugins: make it clear the testing is done through Pelican.
Vladimír Vondruš [Tue, 7 May 2019 22:28:24 +0000 (00:28 +0200)]
documentation/python: module tree showed expanders where not needed.
What the heck was I doing there.
Vladimír Vondruš [Tue, 7 May 2019 22:26:21 +0000 (00:26 +0200)]
documentation/python: support more than 9 function overloads.
I thought this time would never come. But here we are, math.dot() needs
this.
Vladimír Vondruš [Tue, 7 May 2019 22:03:47 +0000 (00:03 +0200)]
documentation/python: implement name mapping for _all__.
Basically, if there's this in the code:
from ._native import Foo as PublicName
from ._native import sub as submodule
__all__ = ['PublicName', 'submodule']
then it's clear that the docs should refere library.PublicName and
library.submodule instead of library._native.Foo / library._native.sub.
This mapping is done for both pybind11 signatures and pure Python code.
Vladimír Vondruš [Tue, 7 May 2019 16:27:17 +0000 (18:27 +0200)]
documentation/python: support string annotations.
Vladimír Vondruš [Tue, 7 May 2019 10:35:48 +0000 (12:35 +0200)]
documentation/python: don't cut off the last character in a warning.
I mistakenly thought a[:-1] is the same as a[:]. It isn't.
Vladimír Vondruš [Sun, 5 May 2019 14:05:10 +0000 (16:05 +0200)]
documentation/python: support plugins.
It looks like we're 90% there, hah.
Vladimír Vondruš [Sun, 12 May 2019 14:42:33 +0000 (16:42 +0200)]
documentation/python: introduce the INPUT option for specifying input dir.
Vladimír Vondruš [Sun, 5 May 2019 12:14:23 +0000 (14:14 +0200)]
documentation/python: initial support for documentation pages.
Vladimír Vondruš [Sun, 5 May 2019 12:41:39 +0000 (14:41 +0200)]
documentation/python: don't add implicit INPUT_MODULES in all tests.
Only in the inspect tests, elsewhere it's counterproductive.
Vladimír Vondruš [Sun, 5 May 2019 12:10:19 +0000 (14:10 +0200)]
documentation/python: properly set up everything from m.htmlsanity.
Vladimír Vondruš [Sun, 5 May 2019 14:26:35 +0000 (16:26 +0200)]
m.filesize: minor cleanup.
Vladimír Vondruš [Sun, 5 May 2019 12:13:57 +0000 (14:13 +0200)]
m.htmlsanity: doc++
Vladimír Vondruš [Sun, 5 May 2019 12:12:45 +0000 (14:12 +0200)]
m.htmlsanity: make it possible to compact field lists again.
Do the patching in _SaneFieldBodyTranslator instead, but since both
Pelican theme (which wants field lists uncompacted) and Python docs
(which doesn't) use it, it has to allow another override again.
Vladimír Vondruš [Sun, 5 May 2019 12:06:29 +0000 (14:06 +0200)]
m.htmlsanity: make the docutils settings public.
Vladimír Vondruš [Sat, 4 May 2019 19:47:34 +0000 (21:47 +0200)]
documentation/python: rename brief to summary.
Another doxygen-ism. It made some sense for API docs, but having "brief"
and "description" for pages doesn't make any sense at all. Summary and
content makes much more sense for pages and since it doesn't make sense
to have two types of naming, let's rename it for everything else as
well. This is now also in-line with Pelican article metadata and XMLDoc
for C# docs, yay.