[PYTHON] Ich wollte bestimmte Erweiterungen beim Erstellen der Sphinx-Dokumentation überspringen

Annahme

Ich bin eine Person, die Reveal.js Folien in Sphinx schreibt, basierend auf meinen eigenen "Sphinx-Enthüllungen".

Bis Sie Erweiterungen mit Sphinx verwenden

Beim Schreiben der Folienquelle mit der Kombination von Sphinx + Revealjs gibt es eine solche Szene.

presentation.rst


Ansible Bewegung(Inhalt)
-------------------

.. 60sec

.. todo::Playbook der obigen Demo

Inventardatei

*Definieren Sie eine Liste von Servern, um die Verarbeitung und einfache Informationen auszuführen

Mit der hier verwendeten Direktive "todo" können Sie todo wie in Sphinx anzeigen. Dies ist nützlich, um Notizen wie "Was soll danach geschrieben werden" oder "Was Sie schreiben wollten" zu machen.

Da es sich also nicht um eine integrierte Erweiterung handelt, muss sie als Erweiterung in "conf.py" angegeben werden, die beim Erstellen mit Sphinx verwendet wird, aber ...

conf.py


extensions = [
    'sphinx.ext.todo',
    'sphinx_revealjs',
]

Das Erstellen mit einem benutzerdefinierten Builder schlägt fehl

Wenn ich es ausführe, erhalte ich eine solche Fehlermeldung und der Build schlägt fehl.

$ pipenv run make revealjs
Ausnahme aufgetreten
  File "/home/attakei/.local/share/virtualenvs/slides-P9x2JL-m/lib/python3.7/site-packages/sphinx/writers/html5.py", line 885, in unknown_visit
    raise NotImplementedError('Unknown node: ' + node.__class__.__name__)
NotImplementedError: Unknown node: todo_node

Nun, ich erhalte diesen Fehler, obwohl die Sphinx-Erweiterung ordnungsgemäß registriert sein sollte. Wenn ich den Builder auf "html" setze, scheint der Build normal abgeschlossen zu sein. Das scheint am eigenen Enthüllungsbauer zu liegen

Verfolgen Sie Fehler ... diesmal wieder

Teilen Sie den Nebenstellenaufruf von der Seite "conf.py" auf

Das Ändern der Bibliothek riecht sehr, also spielen Sie vorerst mit conf.py

** "Wenn Sie als Builder" disclosejs "angeben, registrieren Sie" sphinx.ext.todo "nicht in der Erweiterung" ** "

Zum Ziel.

conf.py


extensions = [
    'sphinx_revealjs',
]

if is_not_builder_revealjs:
    extensions += [
       'sphinx.ext.todo',
    ]

So was

Bestätigen Sie den Builder grob zum Zeitpunkt von "conf.py" (unter eingeschränkten Bedingungen).

Sphinx empfiehlt einen make-basierten Build.

%: Makefile
	@$(SPHINXBUILD) -b $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

Auf diese Weise wird der Befehl sphinx-build übergeben. Und zum Glück scheint das Modul sphinx.cmd.build, das die Quelle des Befehls ist, in der Befehlszeile verwendet zu werden, nachdem ein Argumentparser mit einer Funktion separat generiert wurde.

https://github.com/sphinx-doc/sphinx/blob/master/sphinx/cmd/build.py#L97

Es fühlt sich wie ein rauer Blick an und es scheint, dass es so verwendet werden kann, wie es ist, also werde ich mich in "conf.py" stürzen.

conf.py


import sys
from sphinx.cmd.build import get_parser


sphinx_args = get_parser().parse_args(sys.argv[1:])

extensions = [
    'sphinx_revealjs',
]

if sphinx_args.builder != 'revealjs':
    extensions += [
        'sphinx.ext.todo',
    ]

Jetzt das. Wenn Sie bauen, ...

$ pipenv run make revealjs



Statische Datei kopieren... ...Erledigt
copying extra files...Erledigt
dumping search index in Japanese (code: ja)...Erledigt
dumping object inventory...Erledigt
Erfolg aufbauen, 3 warnings.

Erfolgreich: +1:

Recommended Posts

Ich wollte bestimmte Erweiterungen beim Erstellen der Sphinx-Dokumentation überspringen
Wenn Sie möchten, dass das Thema Ihrer Sphinx-Dokumentation dasselbe ist
Was ich getan habe, als ich Python schneller machen wollte - Numba Edition -
[Django] Ich wollte testen, wenn ich eine große Datei poste [TDD]
Wercker Schritt zum Kompilieren der Sphinx-Dokumentation
Hash-Kette wollte ich vermeiden (2)
Ich wollte cGAN zu ACGAN weiterentwickeln
Hash-Kette wollte ich vermeiden (1)
Bei der Einführung der Google Cloud Vision-API in Schienen habe ich die Dokumentation befolgt.
Worauf ich mich beim Studium von tkinter bezog
Ich wollte ABC160 mit Python lösen
Ich wollte ABC159 mit Python lösen
Ich wollte ABC172 mit Python lösen
Ich wollte unbedingt mit Selen kopieren
DQN mit TensorFlow implementiert (ich wollte ...)