Skip to main content

syrenka is mermaid markdown generator

Project description

syrenka

syrenka is mermaid markdown generator

Description

The aim of this project is to provide easy to use classes for generating mermaid charts and diagrams.

Installation

pip install syrenka

Example

Diagrams displayed here are generated from mermaid markdown generated by syrenka converted with mmdc into svg.

SyrenkaFlowchart

Here is the simple flowchart:

SyrenkaFlowchart

and the code behind it:

import syrenka.flowchart as sf
import sys

fl = sf.SyrenkaFlowchart(
    title="Simple Flowchart", direction=sf.FlowchartDirection.TopToBottom
)
fl.add(sf.Node(id="1", text="First"))
sub = sf.Subgraph(id="s", text="Subgraph")
sub.add(sf.Node(id="2", text="Second"))
sub.add(sf.Node(id="3", text="Third"))
fl.add(sub)
fl.add(sf.Node(id="4", text="Fourth"))

fl.connect_by_id("1", "2")
fl.connect_by_id(source_id="2", target_id="3", edge_type=sf.EdgeType.DottedLink)
fl.connect_by_id("3", "4").connect_by_id("4", "s", sf.EdgeType.ThickLink)

fl.to_code(file=sys.stdout)

SyrenkaClassDiagram

This example uses importlib.import_module + ast approach. Here are current classes in syrenka module - syrenka generated mermaid diagram, rendered to svg with use of mmdc:

SyrenkaClassDiagram

So how do we get it? This is a code snippet that does it:

from syrenka.classdiagram import SyrenkaClassDiagram, SyrenkaClassDiagramConfig
from syrenka.base import ThemeNames
from syrenka.lang.python import PythonModuleAnalysis

# from io import StringIO
import sys

class_diagram = SyrenkaClassDiagram(
    "syrenka class diagram", SyrenkaClassDiagramConfig().theme(ThemeNames.neutral)
)
class_diagram.add_classes(
    PythonModuleAnalysis.classes_in_module(module_name="syrenka", nested=True)
)

# file can be anything that implements TextIOBase
# out = StringIO() # string buffer in memory
out = sys.stdout  # stdout
# out = open("syrenka.md", "w") # write it to file

class_diagram.to_code(file=out)

# StringIO
# out.seek(0)
# print(out.read())

SyrenkaAstClassDiagram

This is example is using python ast approach for generating the class diagram.

SyrenkaAstClassDiagram

And the code snippet used to generate it:

from syrenka.classdiagram import SyrenkaClassDiagram, SyrenkaClassDiagramConfig
from syrenka.base import ThemeNames
from syrenka.lang.python import PythonModuleAnalysis

from pathlib import Path

# from io import StringIO
import sys

class_diagram = SyrenkaClassDiagram(
    "syrenka class diagram", SyrenkaClassDiagramConfig().theme(ThemeNames.neutral)
)
class_diagram.add_classes(
    PythonModuleAnalysis.classes_in_path(
        Path(__file__).parent.parent / "src"
    )  # , recursive==True)
)

# file can be anything that implements TextIOBase
# out = StringIO() # string buffer in memory
out = sys.stdout  # stdout
# out = open("syrenka.md", "w") # write it to file

class_diagram.to_code(file=out)

# StringIO
# out.seek(0)
# print(out.read())

Project details


Download files

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

Source Distribution

syrenka-0.4.2.tar.gz (56.8 kB view details)

Uploaded Source

Built Distribution

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

syrenka-0.4.2-py3-none-any.whl (13.7 kB view details)

Uploaded Python 3

File details

Details for the file syrenka-0.4.2.tar.gz.

File metadata

  • Download URL: syrenka-0.4.2.tar.gz
  • Upload date:
  • Size: 56.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for syrenka-0.4.2.tar.gz
Algorithm Hash digest
SHA256 024ab7a417d1ef0b7e5ceaff0cceb6f5998f58809e36277040912fdbf38b179c
MD5 987449ce5ae0962c86c6f2247a15b684
BLAKE2b-256 cfe58fdb730efbfef983b3ae3950da0f591538a53f6702d30f8a1ef5d719a0dd

See more details on using hashes here.

Provenance

The following attestation bundles were made for syrenka-0.4.2.tar.gz:

Publisher: python-publish.yml on bartlomiejcieszkowski/syrenka

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file syrenka-0.4.2-py3-none-any.whl.

File metadata

  • Download URL: syrenka-0.4.2-py3-none-any.whl
  • Upload date:
  • Size: 13.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for syrenka-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 dbb1838e45d7fb2bbf290fe30f6a99c9e81676915ecff79be49a6eff425198f7
MD5 b6e0531418aaf49d92112153351be6e2
BLAKE2b-256 82d1537d74bb0167af4d62a437293c0cf6e7afe782af63d84bd0f78ed569da27

See more details on using hashes here.

Provenance

The following attestation bundles were made for syrenka-0.4.2-py3-none-any.whl:

Publisher: python-publish.yml on bartlomiejcieszkowski/syrenka

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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