Skip to main content

Hawkmoth - Sphinx Autodoc for C

Project description

Hawkmoth is a minimalistic Sphinx C Domain autodoc directive extension to incorporate formatted C source code comments written in reStructuredText into Sphinx based documentation. It uses Clang Python Bindings for parsing, and generates C Domain directives for C API documentation, and more. In short, Hawkmoth is Sphinx Autodoc for C.

Hawkmoth aims to be a compelling alternative for documenting C projects using Sphinx, mainly through its simplicity of design, implementation and use.


Given C source code with rather familiar looking documentation comments:

 * Get foo out of bar.
void foobar();

and a directive in the Sphinx project:

.. c:autodoc:: filename.c

you can incorporate code documentation into Sphinx. It’s as simple as that.

You can document functions, their parameters and return values, structs, unions, their members, macros, function-like macros, enums, enumeration constants, typedefs, variables, as well as have generic documentation comments not attached to any symbols.


Documentation on how to install and configure Hawkmoth, and write documentation comments, with examples, is available in the doc directory in the source tree, obviously in Sphinx format and using the directive extension. Pre-built documentation showcasing what Hawkmoth can do is available at Read the Docs.


You can install Hawkmoth from PyPI with:

pip install hawkmoth

You’ll additionally need to install Clang and Python 3 bindings for it through your distro’s package manager; they are not available via PyPI. For further details, see the documentation.

Alternatively, installation packages are available for:

In Sphinx, add hawkmoth to extensions, and point cautodoc_root at the source tree. See the extension documentation for details.

Development and Contributing

Hawkmoth source code is available on GitHub. The development version can be checked out via git using this command:

git clone

Please file bugs and feature requests as GitHub issues. Contributions are welcome both as emailed patches to the mailing list and as pull requests.


  • Python 3.4
  • Sphinx 3
  • Clang 6.0
  • Python 3 Bindings for Clang 6.0
  • sphinx-testing 1.0.0 (for development)

These are the versions Hawkmoth is currently being developed and tested against. Other versions might work, but no guarantees.


Hawkmoth is free software, released under the 2-Clause BSD License.


IRC channel #hawkmoth on freenode.

Mailing list Subscription information at the list home page.

Project details

Download files

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

Files for hawkmoth, version 0.7.0
Filename, size File type Python version Upload date Hashes
Filename, size hawkmoth-0.7.0-py3-none-any.whl (14.0 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size hawkmoth-0.7.0.tar.gz (15.4 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page