Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: Fix config option for spelling filters #27537

Merged
merged 1 commit into from Aug 17, 2023

Conversation

qmonnet
Copy link
Member

@qmonnet qmonnet commented Aug 16, 2023

We've been using a custom spelling filter to make sure that "WireGuard" is spelled correctly, with the proper case. As it turns out, passing this filter to the Sphinx configuration, in the conf.py file, makes Sphinx re-read all sources and re-write all output files, as can be observed when running sphinx-build multiple times, without suppressing the output:

$ sphinx-build -M html . _build
[...]
updating environment: [config changed ('spelling_filters')] 472 added, 30 changed, 0 removed
[...]

This is because in conf.py, we pass the filter directly as a function. When Sphinx writes its environment.pickle file to keep track of the configuration in use, it discards values that cannot be serialised, including the filter, <class 'cilium_spellfilters.WireGuardFilter'>, of instance type (ref). So the value for the configuration option spelling_filters is not saved, and as Sphinx believes that the configuration has changed, it reads and rebuilds everything.

In fact, the issue has been reported before, and solved in the spellchecker (ref). We need to set the configuration with a string instead of the direct function object, and the extension is able to load it from there. Let's adjust accordingly, to save cycles when building the docs more than once.

We've been using a custom spelling filter to make sure that "WireGuard"
is spelled correctly, with the proper case. As it turns out, passing
this filter to the Sphinx configuration, in the conf.py file, makes
Sphinx re-read all sources and re-write all output files, as can be
observed when running sphinx-build multiple times, without suppressing
the output:

    $ sphinx-build -M html . _build
    [...]
    updating environment: [config changed ('spelling_filters')] 472 added, 30 changed, 0 removed
    [...]

This is because in conf.py, we pass the filter directly as a function.
When Sphinx writes its environment.pickle file to keep track of the
configuration in use, it discards values that cannot be serialised,
including the filter, "<class 'cilium_spellfilters.WireGuardFilter'>",
of instance "type" [0]. So the value for the configuration option
"spelling_filters" is not saved, and as Sphinx believes that the
configuration has changed, it reads and rebuilds everything.

In fact, the issue has been reported before, and solved in the
spellchecker [1]. We need to set the configuration with a string instead
of the direct function object, and the extension is able to load it from
there. Let's adjust accordingly, to save cycles when building the docs
more than once.

[0] https://github.com/sphinx-doc/sphinx/blob/v7.1.2/sphinx/config.py#L323
[1] sphinx-contrib/spelling#40

Signed-off-by: Quentin Monnet <quentin@isovalent.com>
@qmonnet qmonnet added area/documentation Impacts the documentation, including textual changes, sphinx, or other doc generation code. release-note/misc This PR makes changes that have no direct user impact. labels Aug 16, 2023
@qmonnet qmonnet requested a review from a team as a code owner August 16, 2023 13:39
@qmonnet
Copy link
Member Author

qmonnet commented Aug 16, 2023

/test

Copy link
Contributor

@zacharysarah zacharysarah left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this, @qmonnet. ✨ LGTM

@maintainer-s-little-helper maintainer-s-little-helper bot added the ready-to-merge This PR has passed all tests and received consensus from code owners to merge. label Aug 16, 2023
@ti-mo ti-mo merged commit 270be30 into cilium:main Aug 17, 2023
56 checks passed
@qmonnet qmonnet deleted the pr/sphinx-spelling-filters branch August 17, 2023 08:59
@qmonnet qmonnet added needs-backport/1.12 needs-backport/1.13 This PR / issue needs backporting to the v1.13 branch needs-backport/1.14 This PR / issue needs backporting to the v1.14 branch labels Aug 17, 2023
@tklauser tklauser mentioned this pull request Aug 22, 2023
22 tasks
@tklauser tklauser added backport-pending/1.14 The backport for Cilium 1.14.x for this PR is in progress. and removed needs-backport/1.14 This PR / issue needs backporting to the v1.14 branch labels Aug 22, 2023
@tklauser tklauser mentioned this pull request Aug 23, 2023
8 tasks
@tklauser tklauser added backport-pending/1.13 The backport for Cilium 1.13.x for this PR is in progress. and removed needs-backport/1.13 This PR / issue needs backporting to the v1.13 branch labels Aug 23, 2023
@tklauser tklauser mentioned this pull request Aug 23, 2023
7 tasks
@joestringer joestringer added backport-done/1.13 The backport for Cilium 1.13.x for this PR is done. and removed backport-pending/1.13 The backport for Cilium 1.13.x for this PR is in progress. labels Aug 25, 2023
@tklauser tklauser added backport-done/1.12 The backport for Cilium 1.12.x for this PR is done. and removed backport-pending/1.12 labels Aug 25, 2023
@joestringer joestringer added backport-done/1.14 The backport for Cilium 1.14.x for this PR is done. and removed backport-pending/1.14 The backport for Cilium 1.14.x for this PR is in progress. labels Aug 25, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/documentation Impacts the documentation, including textual changes, sphinx, or other doc generation code. backport-done/1.12 The backport for Cilium 1.12.x for this PR is done. backport-done/1.13 The backport for Cilium 1.13.x for this PR is done. backport-done/1.14 The backport for Cilium 1.14.x for this PR is done. ready-to-merge This PR has passed all tests and received consensus from code owners to merge. release-note/misc This PR makes changes that have no direct user impact.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants