Skip to main content

Static documentation generator for Protobuf and gRPC

Project description

Sabledocs

CircleCI PyPi Python versions

A simple static documentation generator for Protobuf and gRPC contracts.

Demo: You can check out this demo showing the generated documentation for some of the Google Cloud SDK contracts.

How to use

Generate the proto descriptor

In order to build the documentation, you need to generate a binary descriptor from your Proto contracts using protoc. If you don't have it yet, the protoc CLI can be installed by downloading the release from the official protobuf repository.

For example in the folder where your proto files are located, you can execute the following command.

protoc *.proto -o descriptor.pb --include_source_info

(It's important to use the --include_source_info flag, otherwise the comments will not be included in the generated documentation.)

The generated descriptor.pb file will be the input needed to build the documentation site.

Build the documentation

Install the sabledocs package. It requires Python (version 3.11 or higher) to be installed.

pip install sabledocs

In the same folder where the generated descriptor.pb file is located, execute the command.

sabledocs

The documentation will be generated into a folder sabledocs_output, its main page can be opened with index.html.

Customization

For further customization, create a sabledocs.toml file in the folder where the Protobuf descriptor file is located and from which the sabledocs CLI is executed. You can customize the following options. Any omitted field will use its default value.

# Configures the main title of the documentation site.
# Default value: "Protobuf module documentation"
module-title = "My Awesome Module"

# Specifies the name of the Protobuf descriptor file.
# Default value: "descriptor.pb"
input-descriptor-file = "myawesomemodule.pb"

# Specifies the file which contains the content to display on the main page above the package list.
# Default value: ""
main-page-content-file = "intro.md"

# The output folder to which the documentation is generated.
# Default value: "sabledocs_output"
output-dir = "docs"

# Controls whether the the search functionality is enabled with a prebuilt Lunr index.
# Default value: true
enable-lunr-search = true

# Copyright message displayed in the footer.
# Default value: ""
footer-content = "© 2023 Jane Doe. All rights reserved."

# The following 3 fields configure the source control repository of the project.
# It is used to generate deeplink for the components of the Proto model pointing to the original source code.
# By default these fields are not configured, and source code links are not included in the docs.
# The repository-type field supports two possible values, "github" and "bitbucket".
# The fields repository-url and `repository-branch` should be configured to point to the correct repository.
repository-type = "github"
repository-url = "https://github.com/janedoe/myawesomeproject"
repository-branch = "main"

# In each comment, ignore everything that comes after (until end of the comment) one of the keywords.
# Default value: []
ignore-comments-after = ["@exclude"]
# In each comment, ignore all lines that contain at least one keyword from the following list.
# Default value: []
ignore-comment-lines-containing = ["buf:lint"]

# In the templates, one can now use non_hidden_packages instead of packages where the following are hidden:
# Default value: []
hidden-packages = ["google.protobuf"]

Main page content

Custom introduction content can be specified in a separate file, which can be displayed above the packages list on the main page of the documentation.
Then the name of the file has to be specified in the main-page-content-file configuration setting.

main-page-content-file = "intro.md"

See the example on the main page of the demo site.

For maintainers

Build the Python package:

python -m build

Publish with twine:

python -m twine upload --repository testpypi dist/*

Install from the local folder:

pip install .

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

sabledocs-0.8.322.dev0.tar.gz (49.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sabledocs-0.8.322.dev0-py3-none-any.whl (50.9 kB view details)

Uploaded Python 3

File details

Details for the file sabledocs-0.8.322.dev0.tar.gz.

File metadata

  • Download URL: sabledocs-0.8.322.dev0.tar.gz
  • Upload date:
  • Size: 49.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0

File hashes

Hashes for sabledocs-0.8.322.dev0.tar.gz
Algorithm Hash digest
SHA256 265b81d5ca08fa66803f41fd3154f355fdc09951139e5569e84b1a9c4780f552
MD5 2095421a763aa7327ba0a7256371237a
BLAKE2b-256 833a66787be03a1ed44ec9ef95c5dbef92900d4691947e2f46b829afbf0b6c89

See more details on using hashes here.

File details

Details for the file sabledocs-0.8.322.dev0-py3-none-any.whl.

File metadata

File hashes

Hashes for sabledocs-0.8.322.dev0-py3-none-any.whl
Algorithm Hash digest
SHA256 fd8e7d3c30e51a10e9db979103aaa3af86eba5feaabbd4254a35b69ab4b443d6
MD5 fc412f0b5b4b7cc01336974bbc81d9ce
BLAKE2b-256 576026a0cb1f991dde7ebd30c66a9261c42116c6914d3d608c23d6660cacaea3

See more details on using hashes here.

Supported by

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