Generate the string which represents a Mermaid diagram.
Project description
mermaid_diagram
Python package for generating the string which represents a Mermaid diagram.
It provides methods to build your diagram. The resulting diagram is returned
as a string, either bare or enclosed within a Markdown code block.
This package cannot produce image files of the diagrams.
Use cases:
- Include Mermaid diagrams (generated from data) in a markdown file which gets created using Python script.
Installation
You can install the package using pip:
pip install mermaid_diagram
Supported diagrams
This package supports the following Mermaid diagrams:
- Packet diagram (
packet-beta).
Usage
Packet diagram
In this first example we build a diagram of the TCP packet,
using the add_segment_bytes and add_segment_bits methods.
To include the total packet size in the title, it uses the size_in_bytes and
size_in_bits getters.
Finally, the diagram string is returned as markdown code block.
from mermaid_diagram import Packet
d = Packet()
d.add_segment_bytes(2, "Source Port")
d.add_segment_bytes(2, "Destination Port")
d.add_segment_bytes(4, "Sequence Number")
d.add_segment_bytes(4, "Acknowledgment Number")
d.add_segment_bits(4, "Data Offset")
d.add_segment_bits(6, "Reserved")
d.add_segment_bits(1, "URG")
d.add_segment_bits(1, "ACK")
d.add_segment_bits(1, "PSH")
d.add_segment_bits(1, "RST")
d.add_segment_bits(1, "SYN")
d.add_segment_bits(1, "FIN")
d.add_segment_bytes(2, "Window")
d.add_segment_bytes(2, "Checksum")
d.add_segment_bytes(2, "Urgent Pointer")
d.add_segment_bytes(4, "(Options and Padding)")
d.add_segment_bytes(8, "Data (variable length)")
d.title = f"TCP Packet - {d.size_in_bytes} bytes ({d.size_in_bits} bits)"
print(d.diagram_markdown)
# ```mermaid
# ---
# title: "TCP Packet - 32 bytes (256 bits)"
# ---
# packet-beta
# 0-15 : "Source Port"
# 16-31 : "Destination Port"
# 32-63 : "Sequence Number"
# 64-95 : "Acknowledgment Number"
# 96-99 : "Data Offset"
# 100-105 : "Reserved"
# 106 : "URG"
# 107 : "ACK"
# 108 : "PSH"
# 109 : "RST"
# 110 : "SYN"
# 111 : "FIN"
# 112-127 : "Window"
# 128-143 : "Checksum"
# 144-159 : "Urgent Pointer"
# 160-191 : "(Options and Padding)"
# 192-255 : "Data (variable length)"
# ```
Which renders as:
In the next example we activate the use_number_prefix option, so that every
segment gets a number prefix (e.g. 1) First segment).
This can be helpful if the diagram will be accompanied by a numbered list
where the segments are explained in detail.
from mermaid_diagram import Packet
d = Packet()
d.use_number_prefix = True
d.add_segment_bytes(2, "Source Port")
d.add_segment_bytes(2, "Destination Port")
d.add_segment_bytes(2, "Length")
d.add_segment_bytes(2, "Checksum")
d.add_segment_bytes(4, "Data (variable length)")
d.title = f"UDP Packet - {d.size_in_bytes} bytes ({d.size_in_bits} bits)"
print(d.diagram_markdown)
# ```mermaid
# ---
# title: "UDP Packet - 12 bytes (96 bits)"
# ---
# packet-beta
# 0-15 : "1) Source Port"
# 16-31 : "2) Destination Port"
# 32-47 : "3) Length"
# 48-63 : "4) Checksum"
# 64-95 : "5) Data (variable length)"
# ```
Which renders as:
Known issues
- No input validation or error handling.
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
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 mermaid_diagram-0.1.2.tar.gz.
File metadata
- Download URL: mermaid_diagram-0.1.2.tar.gz
- Upload date:
- Size: 4.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f6a99444239ad68a402b215677ef067b5a70867d445fb00febe9b431ace9769c
|
|
| MD5 |
5941389749290c0c38d84dbd7124beda
|
|
| BLAKE2b-256 |
0883b2d84f33b8bce89203f3e1577b73f764059b6de28a1fbef8a1051e45169a
|
Provenance
The following attestation bundles were made for mermaid_diagram-0.1.2.tar.gz:
Publisher:
build.yml on mrBrutus/mermaid_diagram
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mermaid_diagram-0.1.2.tar.gz -
Subject digest:
f6a99444239ad68a402b215677ef067b5a70867d445fb00febe9b431ace9769c - Sigstore transparency entry: 200229332
- Sigstore integration time:
-
Permalink:
mrBrutus/mermaid_diagram@2fae3cfb921452542ddfe81a233e031e620bc57d -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/mrBrutus
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@2fae3cfb921452542ddfe81a233e031e620bc57d -
Trigger Event:
push
-
Statement type:
File details
Details for the file mermaid_diagram-0.1.2-py3-none-any.whl.
File metadata
- Download URL: mermaid_diagram-0.1.2-py3-none-any.whl
- Upload date:
- Size: 4.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6eb5f692d8d3f7f5e347e331c219a44829f4e5f6035be189af887e57a25328a8
|
|
| MD5 |
8b6dab772287204fab5c0601588c531a
|
|
| BLAKE2b-256 |
fd5e4db9e689bcfbc46020520d0e1ee00803bd1f19f5674c3a97c6893c395c3b
|
Provenance
The following attestation bundles were made for mermaid_diagram-0.1.2-py3-none-any.whl:
Publisher:
build.yml on mrBrutus/mermaid_diagram
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mermaid_diagram-0.1.2-py3-none-any.whl -
Subject digest:
6eb5f692d8d3f7f5e347e331c219a44829f4e5f6035be189af887e57a25328a8 - Sigstore transparency entry: 200229338
- Sigstore integration time:
-
Permalink:
mrBrutus/mermaid_diagram@2fae3cfb921452542ddfe81a233e031e620bc57d -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/mrBrutus
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@2fae3cfb921452542ddfe81a233e031e620bc57d -
Trigger Event:
push
-
Statement type: