[PYTHON] J'ai créé "sphinx-quickstart-plus", ce qui facilite la création de documents pour Sphinx.

Dit chose: Je veux que vous rendiez Sphinx pratique et que vous l'utilisiez par tout le monde

Sphinx est très pratique, mais le processus de documentation était très lourd. Par conséquent, j'ai fait un module "sphinx-quickstart-plus" qui étend Sphinx.

https://github.com/pashango2/sphinx-qsp

Comment installer

Facile à installer avec pip. Cela dépend du module Sphinx, veuillez donc installer Sphinx à l'avance.

$ pip install sphinx-quickstart-plus

Comment utiliser

Jusqu'à présent, la création de documents était typée «sphinx-quickstart», mais simplement «sphinx-quickstart-plus».

$ sphinx-quickstart-plus

Ensuite, le message suivant sera lu.

production


Welcome to the Sphinx 1.5.1 quickstart utility.

Please enter values for the following settings (just press Enter to
accept a default value, if one is given in brackets).

Enter the root path for documentation.
> Root path for the documentation [.]: document_path

You have two options for placing the build directory for Sphinx output.
Either, you use a directory "_build" within the root path, or you separate
"source" and "build" directories within the root path.
> Separate source and build directories (y/n) [n]: y

...

La sortie est exactement la même que celle du précédent sphinx-quickstart. Vous pourriez penser: «Rien n’a changé», mais restez en contact.

production


...
A Makefile and a Windows command file can be generated for you so that you
only have to run e.g. `make html' instead of invoking sphinx-build
directly.
> Create Makefile? (y/n) [y]: 
> Create Windows command file? (y/n) [y]: 

> ext_commonmark:use CommonMark and AutoStructify (y/n) [n]: y
> ext_nbshpinx:provides a source parser for *.ipynb files (y/n) [n]: y
> ext_blockdiag:Sphinx extension for embedding blockdiag diagrams (y/n) [n]: y
> ext_fontawesome:use font awesome (y/n) [n]: y
> ext_rtd_theme:use Read the Doc theme (y/n) [n]: y
> ext_autobuild:autobuild: Watch a directory and rebuild the documentation (y/n) [n]: y

Enfin, il y a des questions qui n'étaient pas dans sphinx-quickstart. Les extensions et descriptions actuelles sont les suivantes:

Nom étendu La description
ext_commonmark .rstpas seulement.md(CommonMark)Sera disponible
ext_nbshpinx Jupyter Notebook peut être importé
ext_blockdiag Vous pourrez dessiner des schémas fonctionnels
ext_fontawesome Font Awesome sera disponible sur reST
ext_rtd_theme Vous pourrez utiliser le thème Lire la documentation
ext_autobuild Vous pourrez utiliser la construction automatique

Ces extensions Sphinx seront disponibles sans éditer conf.py.

Non seulement cela, lorsque vous relancez sphinx-quickstart-plus, la question du début change.

production


> Use latest setting? (y/n) [y]: y

Si vous tapez «y», répondez simplement aux 5 éléments «Chemin», «Nom du projet», «Auteur», «Version» et «Version», et un document avec les mêmes paramètres que le document précédent sera créé. Se souvient des paramètres de document créés dans le précédent sphinx-quickstart-plus.

Au fait, si vous tapez'n ', la question habituelle sphinx-quickstart sera jouée, mais comme le réglage par défaut est le dernier réglage, vous pouvez appuyer sur la touche ʻEnter` à plusieurs reprises sauf pour la partie modifiée, donc c'est facile. est.

$ sphinx-quickstart-plus

> Use latest setting? (y/n) [y]: n

...

You have two options for placing the build directory for Sphinx output.
Either, you use a directory "_build" within the root path, or you separate
"source" and "build" directories within the root path.
> Separate source and build directories (y/n) [y]: <-La valeur par défaut est la dernière entrée

Code ajouté à conf.py sur chaque sélection d'extension

ext_commonmark

conf.py


# ----- CommonMark
source_suffix = [source_suffix, '.md']

from recommonmark.parser import CommonMarkParser
source_parsers = {
    '.md': CommonMarkParser,
}

from recommonmark.transform import AutoStructify

github_doc_root = 'https://github.com/rtfd/recommonmark/tree/master/doc/'
def setup(app):
    app.add_config_value('recommonmark_config', {
            'url_resolver': lambda url: github_doc_root + url,
            'auto_toc_tree_section': 'Contents',
            }, True)
    app.add_transform(AutoStructify)

ext_nbshpinx

conf.py


# ----- Jupyter Notebook nbsphinx
extensions.append('nbsphinx')
exclude_patterns.append('**.ipynb_checkpoints')

ext_blockdiag

conf.py


# ----- blockdiag settings
extensions.extend([
    'sphinxcontrib.blockdiag',
    'sphinxcontrib.seqdiag',
    'sphinxcontrib.actdiag',
    'sphinxcontrib.nwdiag',
    'sphinxcontrib.rackdiag',
    'sphinxcontrib.packetdiag',
])
blockdiag_html_image_format = 'SVG'
seqdiag_html_image_format = 'SVG'
actdiag_html_image_format = 'SVG'
nwdiag_html_image_format = 'SVG'
rackiag_html_image_format = 'SVG'
packetdiag_html_image_format = 'SVG'

ext_fontawesome

conf.py


# ----- sphinx-fontawesome
import sphinx_fontawesome
extensions.append('sphinx_fontawesome')

ext_rtd_theme

conf.py


# ----- Read the Docs Theme
html_theme = "sphinx_rtd_theme"

ext_autobuild

auto_build ne réécrit pas conf.py, mais réécrit Makefile.

$ make livehtml

Si vous tapez, la construction automatique démarre. Pour les utilisateurs de Windows, ʻauto_build.bat` sera généré, veuillez donc l'exécuter.

$ auto_build.bat

Si vous éditez .md tel que PyCharm, un fichier temporaire sera créé et il sera également construit, il y a donc aussi un paramètre pour ignorer la construction de certains fichiers temporaires.

À propos de la licence

"Sphinx-quickstart-plus" est sans licence, n'hésitez pas à l'utiliser. Veuillez noter que nous ne sommes pas responsables des inconvénients causés par l'utilisation de ce module.

https://github.com/pashango2/sphinx-qsp

De plus, comme mon environnement est Ubuntu, je n'ai pas pu le tester sur les environnements Windows et Mac. Je pense qu'il y a des bugs. Si vous rencontrez des problèmes, veuillez nous en informer dans la section Problème ou commentaire de GitHub.

Commentaire de code

Ce module lui-même est un petit module avec moins de 400 lignes, commentaires compris, et la période de création est d'environ 6 heures, et la majeure partie est un travail de débogage. Cependant, il supporte pleinement les riches arguments et fonctionnalités de sphinx-quickstart.

La raison pour laquelle vous pouvez faire cela est que vous utilisez une technologie appelée ** Monkey Patch **.

Qu'est-ce qu'un patch de singe?

Un patch monkey est un patch qui détourne le comportement d'une bibliothèque existante et la réécrit dynamiquement. C'est une prouesse qui tire parti des caractéristiques des langages dynamiques et c'est une technique qui ne peut pas être imitée par les langages compilés. [^ 1]

[^ 1]: J'ai fait un patch monkey du langage de compilation sur http://postd.cc/monkey-patching-in-go/, c'est une jolie magie noire en utilisant un assembleur.

Supplément