Protobuf UML diagram
A tool to generate UML diagrams from Protobuf compiled Python modules.
[!NOTE] This tool expects compiled Python protobuf modules (
*_pb2.py). Installprotocseparately if you need to compile.protofiles.
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:
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:
- Compiles the
.protofiles usingprotoc - Generates Python protobuf modules
- 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:
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
51feaf615631c2dd7f0067cb707f7658acb0cd2a964ac3caacd977a665fa4014
|
|
| MD5 |
b1b53b5301b043ab0ddfa2e0afccdea5
|
|
| BLAKE2b-256 |
d71ea50656d2ecd58ad56f2c65987b4e4d2acec7b8ac5359220391473a7c0dca
|
File details
Details for the file protobuf_uml_diagram-0.16-py3-none-any.whl.
File metadata
- Download URL: protobuf_uml_diagram-0.16-py3-none-any.whl
- Upload date:
- Size: 13.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6025d373efcd1ded59a4a7ca3cf319dfca12d477b92bccf9ad85ccdcd36db08d
|
|
| MD5 |
3d4c6dccd51421e4e4cfe2b68a494bda
|
|
| BLAKE2b-256 |
c8eb7d810d99d60aa1dfaf0b81bbda430c037306e339e8a33df1d02705b42197
|