MermaidJS markup builder for Python
Project description
Python MermaidJS Markup Builder
MermaidJS Markup builder helps to script MermaidJS markup creation.
MermaidJS is an amazing product, but the syntax is very human readable and writeable (comparing to graphviz for exmaple).
for example, node or arrow shape on a flowchart is something that is easy to see as ASCII, but not easy to adhoc script.
This library should help to write mermaidJS markup, which then can be rendered in Markdown/github or playground.
NOTE: This is Work in progress
Next tasks on my list:
- styling for flowchart (adding classes and styles)
- "clone with prefix" (creates a clone of a node or a subgraph but adds a prefix to ID, so the don't conflict)
- class diagrams
- groups for sequence diagrams
- package for distribution
Examples:
Flow chart
untyped version
chart = (Chart(title='test1')
.add_node('user')
.add_node('client')
.add_node('server')
.add_node('database')
.add_link_between('user', 'client')
.add_link_between('client', 'server')
.add_link_between('server', 'database'))
OOP (more complicated version)
chart = Chart(title='Test', direction=ChartDir.TB)
node1 = Node(title="this is my node", id='my-node', shape=NodeShape.HEXAGON)
node2 = Node(title="this is my second node")
chart.add_node(node1).add_node(node2)
link = Link(src=node1.get_id(), dest=node2.get_id(), text='this is my link')
chart.add_link(link)
subgraph = Subgraph(title='subgraph', direction=ChartDir.LR)
subgraph.add_node(Node(title='i am a node inside subgraph'))
subgraph2 = Subgraph(title='subgraph2', direction=ChartDir.LR)
sn1 = Node(title='subnode 2')
sn2 = Node(title='subnode 3')
(subgraph2
.add_node(sn1)
.add_node(sn2)
.add_link(Link(src=sn1, dest=sn2, text='link between subnodes')))
subgraph.add_subgraph(subgraph2)
chart.add_subgraph(subgraph)
Sequence diagram
diagram = SequenceDiagram()
client = Participant(id='C', label='Client')
server = Participant(id='S', label='Server')
database = Participant(id='D', label='Database')
(diagram
.add_participant(client)
.add_participant(server)
.add_participant(database)
.add_message(Message(src=client, dest=server, text='HTTP Request', activation_mode=ActivationMode.ACTIVATE))
.add_message(Message(src=server, dest=database, text='SQL Query'))
.add_message(Message(src=database, dest=server, text='Result', arrow=ArrowType.DOTTED_LINE_NO_ARROW))
.add_message(Message(src=server, dest=client, text='HTTP Response', activation_mode=ActivationMode.DEACTIVATE))
.add_note(Note(participants=[client], text='This is a note', position=NotePosition.LEFT_OF)))
see flowchart_test.py
and sequence_diagram_test.py
for more examples.
Development
This library doesn't have any dependencies.
python3 -m venv venv
source venv/bin/activate
pip3 install -e .
Just use python3.5+ , as it's using types
and Union
Run tests
pytest
to preview - paste results to https://www.devtoolsdaily.com/diagrams/mermaidjs/playground/
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
File details
Details for the file mermaid_builder-0.0.3.tar.gz
.
File metadata
- Download URL: mermaid_builder-0.0.3.tar.gz
- Upload date:
- Size: 7.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.10.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3016ef25668bcb28de4a4746aabdfaa531c06a7e7f89fa1596e6a274c7c73705 |
|
MD5 | 3625aded224a524ca7a463921d2ba3f1 |
|
BLAKE2b-256 | 6457d83e7e62de05adbba2476b7596ed4a253907a4f4c19be74c40e7ce2944dc |
File details
Details for the file mermaid_builder-0.0.3-py3-none-any.whl
.
File metadata
- Download URL: mermaid_builder-0.0.3-py3-none-any.whl
- Upload date:
- Size: 6.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.10.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | decd7d25268bda7a520ce0cab7873e50fac1e33b41e5a1dd7daec5c0ae3c7ffb |
|
MD5 | 2b0802d684c36be0140156b091296f4e |
|
BLAKE2b-256 | 5f4e7480454b7ee7de5c2c8561e83b4564196ecf1c9847e893dfbb51032e5a3b |