Skip to main content

Autodoc converting YAML docstrings and code comments to sphinx documentation

Project description

sphinxter

Autodoc converting YAML docstrings and code comments to sphinx documentation

Formatting

I wanted something that generated readable HTML documentation from readable Code documentation.

Even if you've done nothing to your code to use sphinxter, it'll generate decent documentation assuming non YAML docstrings are descriptions for their resources.

Say this is yourmodule

"""
The module description
"""

foo = None # The foo description

def func(
    bar:int # The bar description
)->bool:
    """
    The function description
    """

This would be the result in docs/source/index.rst:

.. created by sphinxter
.. default-domain:: py

yourmodule
==========

.. module:: yourmodule

The module description

.. attribute:: foo

    The foo description

.. function:: func(bar: int)

    The function description

    :param bar: The bar description
    :type bar: int
    :rtype: bool

Not only is this decent documentation, sphinxter picked up the comments next to both attributes and function parameters, which is a very common, readable pattern in code.

Another useful couple of features is that sphinxter can read dosctrings as YAML and it can read attributes docstrings (which yes, don't really exist, but it works anyway) allowing for some complex but still readable behavior.

Say this is yourmodule now:

"""
The module description
"""

foo = None # The foo description
"""
usage: |
    Do it this way::

        yourmodule.foo = 7
"""

def func(
    bar:int # The bar description
)->bool:
    """
    description: The function description
    return: Whether the function worked or not
    """

This would now be the result in docs/source/index.rst:

.. created by sphinxter
.. default-domain:: py

yourmodule
==========

.. module:: yourmodule

The module description

.. attribute:: foo

    The foo description

    **Usage**

    Do it this way::

        yourmodule.foo = 7

.. function:: func(bar: int)

    The function description

    :param bar: The bar description
    :type bar: int
    :return: Whether the function worked or not
    :rtype: bool

Taking advantage of attribute docstrings and YAML docstrings added more documentation, but didn't really lessen the readability of the code.

That's the goal of sphinxter.

Organization

By default, everything ends up in the index.rst document. With modules, classes, and functions you can a different document and even the order in which they'll appear in the document. If the parent modules don't match, sphinxter will add a currentmodule directive so everything will be organized properly.

Setup

To setup a package to use sphinxter:

  1. Install sphinxter (which includes sphinx)
    pip install sphinxter
  1. Setup documentation area as docs/source:
    sphinx-quickstart docs --sep -p yourmodule -a 'Your Name' -r yourversion -l en
  1. Create a script docs.py like so:
    #!/usr/bin/env python

    import sphinxter
    import yourmodule

    sphinxter.Sphinxter(yourmodule).process()
  1. Run that script to auto generate docs from your docstrings (they'll end up in docs/source):
    chmod a+x docs.py
    ./docs.py
  1. Create HTML from those documents (they'll end up in docs/build/html):
    sphinx-build -b html docs/source/ docs/build/html

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

sphinxter-0.1.7.tar.gz (24.7 kB view details)

Uploaded Source

Built Distribution

sphinxter-0.1.7-py3-none-any.whl (25.5 kB view details)

Uploaded Python 3

File details

Details for the file sphinxter-0.1.7.tar.gz.

File metadata

  • Download URL: sphinxter-0.1.7.tar.gz
  • Upload date:
  • Size: 24.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.8.5

File hashes

Hashes for sphinxter-0.1.7.tar.gz
Algorithm Hash digest
SHA256 19a56a4dee9d92af89a255edda213373411a5719781198f4400e78e029c5efbc
MD5 a99afc83ee0523e380482cc823191109
BLAKE2b-256 860ff0878a11e2c2b138fcf94e943f3660247bb21347305368e33b5881f3f1cd

See more details on using hashes here.

File details

Details for the file sphinxter-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: sphinxter-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 25.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.8.5

File hashes

Hashes for sphinxter-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 297205e6638fc8f40753ab6449efb888aa5a4af16aff68f551d6356d3c97ff55
MD5 60ed59a094c61ef1432c9558865bab9e
BLAKE2b-256 a4addb06d529c0873f13b2726ed25aa9a62ba9db077ddfc7a578b534eadd3070

See more details on using hashes here.

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