Skip to main content

sphinxserve renders sphinx docs monitoring file changes

Project description

sphinxserve is a tool to effectively document projects

Since the internet adopted HTML, many communities are trying to find ways to write web pages in ways that can be pleasantly readable and writable. In our python community, reStructuredText and Sphinx have been created to author beautiful documentation. The goal of sphinxserve is to make them more accessible, interactive, and convenient to use.

Examples of projects using sphinx

Sphinx

http://sphinx-doc.org

Read The Docs

https://read-the-docs.readthedocs.org

Projects using sphinx

http://sphinx-doc.org/examples.html

sphinxjp.themes.revealjs

http://pythonhosted.org/sphinxjp.themes.revealjs

loadconfig

http://loadconfig.glidelink.net/docs

Design considerations

sphinxserve was originally conceived as a Python and Linux project that can visualize sphinx document modifications in real time while working on them. At its core, sphinxserve uses the awesome projects gevent to provide concurrency and event coordination, flask for web communication, Sphinx for reStructucturedText rendering and of course Python. sphinxserve used to control browser reloading with xdotool, introducing a complex system tool dependency. On release 0.7, sphinxserve decouples from this system dependency using instead flask-sockets python package. The tradeoff here was to temporarily drop python3 support until the gevent ecosystem officially supports python3 which should be soon. sphinxserve also upgraded its filesystem notification tool to watchdog, removing another system dependency and making the code more generic, cleaner and closer to run in other operating systems.

Installation

sphinxserve can be installed either as a python package, or as a docker application. On linux, it can also be installed as a pex python executable

Python executable (PEX)

This is the easiest (no compilation or fancy tooling needed) and smallest (~9 MB) way to install sphinxserve using the excellent PEX tool. In itself, it is a zipfile containing all python package dependencies and only requires the python interpreter. This pex is verified to work at least on Debian>=7, Ubuntu>=14, Centos>=7 and Arch distros.

System dependencies: python>=2.7,<3 and a web browser supporting websockets

(Firefox, Chrome, etc)

$ wget -O ~/bin/sphinxserve https://github.com/mzdaniel/sphinxserve/releases/download/0.7.1/sphinxserve $ chmod 755 ~/bin/sphinxserve

Python package

System dependencies: python==2.7, pip>=7, the C toolchain (package names dependent on linux distro) to compile gevent and a web browser.

pip automatically downloads sphinxserve and its python dependencies, compiles and builds wheel binary packages as needed and finally install sphinxserve using:

$ pip install sphinxserve

Docker application

Docker is an extraordinary tool that simplifies the entire dependency tree by including it in a system image. This makes the installation experience much more pleasant and the ability to run on OSX, Windows and Linux with the same image, assuming proper setup of the docker network and volume. Another advantage is that a running image cannot see your filesystem by default. Sharing directories and which ones is an explicit setup. This method is verified to work on Linux so far.

System dependencies: docker and a browser

This installation command automatically downloads sphinxserve image (~40 MB) and creates a small shell script ~/bin/sphinxserve that simplifies the running interface with the following command:

$ docker run mzdaniel/sphinxserve install | bash

Launching

Assumming your sphinx project is in ~/docproj (containing conf.py) and ~/bin is in your shell $PATH:

$ sphinxserve ~/docproj

Workflow

After launching sphinxserve, it will build the sphinx pages and serve them by default on localhost:8888. Any saved changes on rst or txt files will trigger docs rebuild.

Working in a Restructured text project

Lets put together all the pieces. A sphinx project needs at minimum 2 files: the project file conf.py and a restructuredtext (rst) index file index.rst:

cat > conf.py << EOF
master_doc = 'index'
EOF

cat > index.rst << 'EOF'
My awesome sphinx project
=========================

This is my first attempt to use `My awesome sphinx project`_
EOF

At this point we can browse our project on localhost:8888 with just:

sphinxserve

Thanks!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sphinxserve-0.7.1.tar.gz (9.0 kB view hashes)

Uploaded Source

Built Distribution

sphinxserve-0.7.1-py2-none-any.whl (12.5 kB view hashes)

Uploaded Python 2

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page