Skip to main content

PyPI Python License CI codecov

Protobuf UML diagram

A tool to generate UML diagrams from Protobuf compiled Python modules.

[!NOTE] This tool expects compiled Python protobuf modules (*_pb2.py). Install protoc separately if you need to compile .proto files.

Example

Generate a UML diagram from a compiled protobuf module:

protobuf-uml-diagram --proto "cylc.flow.ws_messages_pb2" --output /tmp/

Example logging output:

INFO:protobuf_uml_diagram:Imported: cylc.flow.ws_messages_pb2
INFO:protobuf_uml_diagram:Writing diagram to /tmp/ws_messages_pb2.png

Example output:

example output

Installation

pip install protobuf-uml-diagram

Requirements

  • Python >= 3.10
  • protobuf >= 7.35.1
  • Graphviz installed on the system

Quick start

Given a protobuf definition:

file issue_10.proto
issue_10.proto: ASCII text

Compile it:

protoc --python_out=./ issue_10.proto

Generate the UML diagram:

PYTHONPATH=. protobuf-uml-diagram --proto issue_10_pb2 --output /tmp

Example output:

INFO:protobuf_uml_diagram:Imported: issue_10_pb2
INFO:protobuf_uml_diagram:Writing diagram to /tmp/issue_10_pb2.png

Open the generated image:

eog /tmp/issue_10_pb2.png

The result should look like:

Names in diagrams

By default, diagrams use the full name of types (for example, SomeRequest.shipments).

You can use shorter field names with:

PYTHONPATH=. protobuf-uml-diagram \
    --proto issue_10_pb2 \
    --output /tmp \
    --full_names=false

[!WARNING] Using shorter names can make diagrams ambiguous when different fields have the same name but represent different concepts. See #10 and #78.

Example output:

Docker

The Docker image can generate UML diagrams directly from .proto files.

Build the image:

./dockerbuild.sh

Run it:

./dockerrun.sh <path_containing_proto_files> <output_path>

The container:

  1. Compiles the .proto files using protoc
  2. Generates Python protobuf modules
  3. Produces PNG and SVG UML diagrams

Development

Clone the repository:

git clone https://github.com/kinow/protobuf-uml-diagram.git
cd protobuf-uml-diagram

Install development dependencies:

pip install -e ".[all]"

Run tests:

pytest

Run type checks:

mypy .[protobuf_uml_diagram.py](protobuf_uml_diagram.py)

Support

If this project is useful to you, you can support it:

ko-fi

License

Apache Licence 2.0

Download files

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

Source Distribution

protobuf_uml_diagram-0.16.tar.gz (9.7 kB view details)

Uploaded Source

Built Distribution

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

protobuf_uml_diagram-0.16-py3-none-any.whl (13.3 kB view details)

Uploaded Python 3

File details

Details for the file protobuf_uml_diagram-0.16.tar.gz.

File metadata

  • Download URL: protobuf_uml_diagram-0.16.tar.gz
  • Upload date:
  • Size: 9.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for protobuf_uml_diagram-0.16.tar.gz
Algorithm Hash digest
SHA256 51feaf615631c2dd7f0067cb707f7658acb0cd2a964ac3caacd977a665fa4014
MD5 b1b53b5301b043ab0ddfa2e0afccdea5
BLAKE2b-256 d71ea50656d2ecd58ad56f2c65987b4e4d2acec7b8ac5359220391473a7c0dca

See more details on using hashes here.

File details

Details for the file protobuf_uml_diagram-0.16-py3-none-any.whl.

File metadata

File hashes

Hashes for protobuf_uml_diagram-0.16-py3-none-any.whl
Algorithm Hash digest
SHA256 6025d373efcd1ded59a4a7ca3cf319dfca12d477b92bccf9ad85ccdcd36db08d
MD5 3d4c6dccd51421e4e4cfe2b68a494bda
BLAKE2b-256 c8eb7d810d99d60aa1dfaf0b81bbda430c037306e339e8a33df1d02705b42197

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.16 This release

2 files

0.15

2 files

0.14

2 files

0.13

2 files

0.12

2 files

0.11

2 files

0.10

2 files

0.9

2 files

0.8

2 files

0.7

2 files

0.6

2 files

0.5

2 files

0.4

2 files

0.3

2 files

0.2

2 files

Supported by

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