Skip to content

MkClassDiagram

Show source on GitHub

Node to display the class hierarchy of a class. Supports multiple modes.

Example: Baseclass diagram

Jinja

{{ _mk.MkClassDiagram | MkClassDiagram(mode="baseclasses") }}

Python

MkClassDiagram(klass=MkClassDiagram, mode='baseclasses', direction='TD')
graph TD
  94272695684016["mkclassdiagram.MkClassDiagram"]
  94272694448704["mkdiagram.MkDiagram"]
  94272696640432["mkcode.MkCode"]
  94272697822880["mkcontainer.MkContainer"]
  94272697820320["mknode.MkNode"]
  94272697777776["node.Node"]
  139836355973312["builtins.object"]
  94272694448704 --> 94272695684016
  94272696640432 --> 94272694448704
  94272697822880 --> 94272696640432
  94272697820320 --> 94272697822880
  94272697777776 --> 94272697820320
  139836355973312 --> 94272697777776
```` mermaid
graph TD
  94272695684016["mkclassdiagram.MkClassDiagram"]
  94272694448704["mkdiagram.MkDiagram"]
  94272696640432["mkcode.MkCode"]
  94272697822880["mkcontainer.MkContainer"]
  94272697820320["mknode.MkNode"]
  94272697777776["node.Node"]
  139836355973312["builtins.object"]
  94272694448704 --> 94272695684016
  94272696640432 --> 94272694448704
  94272697822880 --> 94272696640432
  94272697820320 --> 94272697822880
  94272697777776 --> 94272697820320
  139836355973312 --> 94272697777776
````
<pre class="mermaid"><code>graph TD
  94272695684016["mkclassdiagram.MkClassDiagram"]
  94272694448704["mkdiagram.MkDiagram"]
  94272696640432["mkcode.MkCode"]
  94272697822880["mkcontainer.MkContainer"]
  94272697820320["mknode.MkNode"]
  94272697777776["node.Node"]
  139836355973312["builtins.object"]
  94272694448704 --&gt; 94272695684016
  94272696640432 --&gt; 94272694448704
  94272697822880 --&gt; 94272696640432
  94272697820320 --&gt; 94272697822880
  94272697777776 --&gt; 94272697820320
  139836355973312 --&gt; 94272697777776</code></pre>

Example: Subclass diagram

Jinja

{{ _mk.MkContainer | MkClassDiagram(mode="subclasses", direction="LR") }}

Python

MkClassDiagram(klass=MkContainer, mode='subclasses', direction='LR')
graph LR
  94272697822880["mkcontainer.MkContainer"]
  94272697823872["mkblock.MkBlock"]
  94272697825648["mkhtmlblock.MkHtmlBlock"]
  94272696472784["mkdetailsblock.MkDetailsBlock"]
  94272696053856["mktabs.MkTabBlock"]
  94272694335584["mkadmonition.MkAdmonition"]
  94272696473776["mkblockquote.MkBlockQuote"]
  94272696640432["mkcode.MkCode"]
  94272694448704["mkdiagram.MkDiagram"]
  94272695684016["mkclassdiagram.MkClassDiagram"]
  94272697404688["mkpipdeptree.MkPipDepTree"]
  94272695336816["mktreeview.MkTreeView"]
  94272697537520["mktemplate.MkTemplate"]
  94272697538512["mkclidoc.MkCliDoc"]
  94272697539504["mkmaterialbadge.MkMaterialBadge"]
  94272697541280["mkimagecompare.MkImageCompare"]
  94272694075328["mkimageslideshow.MkImageSlideshow"]
  94272695184960["mkiframe.MkIFrame"]
  94272696989952["mkcard.MkCard"]
  94272695651600["mkinstallguide.MkInstallGuide"]
  94272685594160["mkcodeofconduct.MkCodeOfConduct"]
  94272697567008["mkcommitconventions.MkCommitConventions"]
  94272697571120["mkpullrequestguidelines.MkPullRequestGuidelines"]
  94272697568000["mkdevenvsetup.MkDevEnvSetup"]
  94272685600272["mkdevtools.MkDevTools"]
  94272695688352["mkreprrawrendered.MkReprRawRendered"]
  94272696841920["mkcommandoutput.MkCommandOutput"]
  94272695799728["mkcommentedcode.MkCommentedCode"]
  94272696839472["mkconfigsetting.MkConfigSetting"]
  94272696226496["mkpluginflow.MkPluginFlow"]
  94272685831168["mklist.MkList"]
  94272694451264["mkbasetable.MkBaseTable"]
  94272685834176["mktable.MkTable"]
  94272696057664["mkhtmltable.MkHtmlTable"]
  94272696444656["mktabs.MkTab"]
  94272696055568["mktabcontainer.MkTabContainer"]
  94272696448176["mktabbedblocks.MkTabbedBlocks"]
  94272696052240["mktabbed.MkTabbed"]
  94272696037584["mkcritic.MkCritic"]
  94272696449952["mkannotations.MkAnnotation"]
  94272696450944["mkannotations.MkAnnotations"]
  94272696041696["mkfootnotes.MkFootNote"]
  94272696042688["mkfootnotes.MkFootNotes"]
  94272695186736["mkdefinitionlist.MkDefinition"]
  94272695187728["mkdefinitionlist.MkDefinitionList"]
  94272697760960["mkpage.MkPage"]
  94272696620096["mktemplatepage.MkTemplatePage"]
  94272695697136["mkclasspage.MkClassPage"]
  94272685612224["mkmodulepage.MkModulePage"]
  94272695540368["mkshowcase.MkShowcase"]
  94272695541360["mkspeechbubble.MkSpeechBubble"]
  94272695546016["mktasklist.MkTask"]
  94272695543920["mktasklist.MkTaskList"]
  94272697767520["mktimeline.MkTimeline"]
  94272696585680["mkshields.MkShields"]
  94272697676976["mkmetadatabadges.MkMetadataBadges"]
  94272697822880 --> 94272697823872
  94272697823872 --> 94272697825648
  94272697823872 --> 94272696472784
  94272697823872 --> 94272696053856
  94272697822880 --> 94272694335584
  94272697822880 --> 94272696473776
  94272697822880 --> 94272696640432
  94272696640432 --> 94272694448704
  94272694448704 --> 94272695684016
  94272694448704 --> 94272697404688
  94272696640432 --> 94272695336816
  94272697822880 --> 94272697537520
  94272697537520 --> 94272697538512
  94272697537520 --> 94272697539504
  94272697537520 --> 94272697541280
  94272697537520 --> 94272694075328
  94272697537520 --> 94272695184960
  94272697537520 --> 94272696989952
  94272697537520 --> 94272695651600
  94272697537520 --> 94272685594160
  94272697537520 --> 94272697567008
  94272697537520 --> 94272697571120
  94272697537520 --> 94272697568000
  94272697537520 --> 94272685600272
  94272697537520 --> 94272695688352
  94272697537520 --> 94272696841920
  94272697537520 --> 94272695799728
  94272697537520 --> 94272696839472
  94272697537520 --> 94272696226496
  94272697822880 --> 94272685831168
  94272697822880 --> 94272694451264
  94272694451264 --> 94272685834176
  94272694451264 --> 94272696057664
  94272697822880 --> 94272696444656
  94272697822880 --> 94272696055568
  94272696055568 --> 94272696448176
  94272696055568 --> 94272696052240
  94272697822880 --> 94272696037584
  94272697822880 --> 94272696449952
  94272697822880 --> 94272696450944
  94272697822880 --> 94272696041696
  94272697822880 --> 94272696042688
  94272697822880 --> 94272695186736
  94272697822880 --> 94272695187728
  94272697822880 --> 94272697760960
  94272697760960 --> 94272696620096
  94272696620096 --> 94272695697136
  94272696620096 --> 94272685612224
  94272697822880 --> 94272695540368
  94272697822880 --> 94272695541360
  94272697822880 --> 94272695546016
  94272697822880 --> 94272695543920
  94272697822880 --> 94272697767520
  94272697822880 --> 94272696585680
  94272697822880 --> 94272697676976
```` mermaid
graph LR
  94272697822880["mkcontainer.MkContainer"]
  94272697823872["mkblock.MkBlock"]
  94272697825648["mkhtmlblock.MkHtmlBlock"]
  94272696472784["mkdetailsblock.MkDetailsBlock"]
  94272696053856["mktabs.MkTabBlock"]
  94272694335584["mkadmonition.MkAdmonition"]
  94272696473776["mkblockquote.MkBlockQuote"]
  94272696640432["mkcode.MkCode"]
  94272694448704["mkdiagram.MkDiagram"]
  94272695684016["mkclassdiagram.MkClassDiagram"]
  94272697404688["mkpipdeptree.MkPipDepTree"]
  94272695336816["mktreeview.MkTreeView"]
  94272697537520["mktemplate.MkTemplate"]
  94272697538512["mkclidoc.MkCliDoc"]
  94272697539504["mkmaterialbadge.MkMaterialBadge"]
  94272697541280["mkimagecompare.MkImageCompare"]
  94272694075328["mkimageslideshow.MkImageSlideshow"]
  94272695184960["mkiframe.MkIFrame"]
  94272696989952["mkcard.MkCard"]
  94272695651600["mkinstallguide.MkInstallGuide"]
  94272685594160["mkcodeofconduct.MkCodeOfConduct"]
  94272697567008["mkcommitconventions.MkCommitConventions"]
  94272697571120["mkpullrequestguidelines.MkPullRequestGuidelines"]
  94272697568000["mkdevenvsetup.MkDevEnvSetup"]
  94272685600272["mkdevtools.MkDevTools"]
  94272695688352["mkreprrawrendered.MkReprRawRendered"]
  94272696841920["mkcommandoutput.MkCommandOutput"]
  94272695799728["mkcommentedcode.MkCommentedCode"]
  94272696839472["mkconfigsetting.MkConfigSetting"]
  94272696226496["mkpluginflow.MkPluginFlow"]
  94272685831168["mklist.MkList"]
  94272694451264["mkbasetable.MkBaseTable"]
  94272685834176["mktable.MkTable"]
  94272696057664["mkhtmltable.MkHtmlTable"]
  94272696444656["mktabs.MkTab"]
  94272696055568["mktabcontainer.MkTabContainer"]
  94272696448176["mktabbedblocks.MkTabbedBlocks"]
  94272696052240["mktabbed.MkTabbed"]
  94272696037584["mkcritic.MkCritic"]
  94272696449952["mkannotations.MkAnnotation"]
  94272696450944["mkannotations.MkAnnotations"]
  94272696041696["mkfootnotes.MkFootNote"]
  94272696042688["mkfootnotes.MkFootNotes"]
  94272695186736["mkdefinitionlist.MkDefinition"]
  94272695187728["mkdefinitionlist.MkDefinitionList"]
  94272697760960["mkpage.MkPage"]
  94272696620096["mktemplatepage.MkTemplatePage"]
  94272695697136["mkclasspage.MkClassPage"]
  94272685612224["mkmodulepage.MkModulePage"]
  94272695540368["mkshowcase.MkShowcase"]
  94272695541360["mkspeechbubble.MkSpeechBubble"]
  94272695546016["mktasklist.MkTask"]
  94272695543920["mktasklist.MkTaskList"]
  94272697767520["mktimeline.MkTimeline"]
  94272696585680["mkshields.MkShields"]
  94272697676976["mkmetadatabadges.MkMetadataBadges"]
  94272697822880 --> 94272697823872
  94272697823872 --> 94272697825648
  94272697823872 --> 94272696472784
  94272697823872 --> 94272696053856
  94272697822880 --> 94272694335584
  94272697822880 --> 94272696473776
  94272697822880 --> 94272696640432
  94272696640432 --> 94272694448704
  94272694448704 --> 94272695684016
  94272694448704 --> 94272697404688
  94272696640432 --> 94272695336816
  94272697822880 --> 94272697537520
  94272697537520 --> 94272697538512
  94272697537520 --> 94272697539504
  94272697537520 --> 94272697541280
  94272697537520 --> 94272694075328
  94272697537520 --> 94272695184960
  94272697537520 --> 94272696989952
  94272697537520 --> 94272695651600
  94272697537520 --> 94272685594160
  94272697537520 --> 94272697567008
  94272697537520 --> 94272697571120
  94272697537520 --> 94272697568000
  94272697537520 --> 94272685600272
  94272697537520 --> 94272695688352
  94272697537520 --> 94272696841920
  94272697537520 --> 94272695799728
  94272697537520 --> 94272696839472
  94272697537520 --> 94272696226496
  94272697822880 --> 94272685831168
  94272697822880 --> 94272694451264
  94272694451264 --> 94272685834176
  94272694451264 --> 94272696057664
  94272697822880 --> 94272696444656
  94272697822880 --> 94272696055568
  94272696055568 --> 94272696448176
  94272696055568 --> 94272696052240
  94272697822880 --> 94272696037584
  94272697822880 --> 94272696449952
  94272697822880 --> 94272696450944
  94272697822880 --> 94272696041696
  94272697822880 --> 94272696042688
  94272697822880 --> 94272695186736
  94272697822880 --> 94272695187728
  94272697822880 --> 94272697760960
  94272697760960 --> 94272696620096
  94272696620096 --> 94272695697136
  94272696620096 --> 94272685612224
  94272697822880 --> 94272695540368
  94272697822880 --> 94272695541360
  94272697822880 --> 94272695546016
  94272697822880 --> 94272695543920
  94272697822880 --> 94272697767520
  94272697822880 --> 94272696585680
  94272697822880 --> 94272697676976
````
<pre class="mermaid"><code>graph LR
  94272697822880["mkcontainer.MkContainer"]
  94272697823872["mkblock.MkBlock"]
  94272697825648["mkhtmlblock.MkHtmlBlock"]
  94272696472784["mkdetailsblock.MkDetailsBlock"]
  94272696053856["mktabs.MkTabBlock"]
  94272694335584["mkadmonition.MkAdmonition"]
  94272696473776["mkblockquote.MkBlockQuote"]
  94272696640432["mkcode.MkCode"]
  94272694448704["mkdiagram.MkDiagram"]
  94272695684016["mkclassdiagram.MkClassDiagram"]
  94272697404688["mkpipdeptree.MkPipDepTree"]
  94272695336816["mktreeview.MkTreeView"]
  94272697537520["mktemplate.MkTemplate"]
  94272697538512["mkclidoc.MkCliDoc"]
  94272697539504["mkmaterialbadge.MkMaterialBadge"]
  94272697541280["mkimagecompare.MkImageCompare"]
  94272694075328["mkimageslideshow.MkImageSlideshow"]
  94272695184960["mkiframe.MkIFrame"]
  94272696989952["mkcard.MkCard"]
  94272695651600["mkinstallguide.MkInstallGuide"]
  94272685594160["mkcodeofconduct.MkCodeOfConduct"]
  94272697567008["mkcommitconventions.MkCommitConventions"]
  94272697571120["mkpullrequestguidelines.MkPullRequestGuidelines"]
  94272697568000["mkdevenvsetup.MkDevEnvSetup"]
  94272685600272["mkdevtools.MkDevTools"]
  94272695688352["mkreprrawrendered.MkReprRawRendered"]
  94272696841920["mkcommandoutput.MkCommandOutput"]
  94272695799728["mkcommentedcode.MkCommentedCode"]
  94272696839472["mkconfigsetting.MkConfigSetting"]
  94272696226496["mkpluginflow.MkPluginFlow"]
  94272685831168["mklist.MkList"]
  94272694451264["mkbasetable.MkBaseTable"]
  94272685834176["mktable.MkTable"]
  94272696057664["mkhtmltable.MkHtmlTable"]
  94272696444656["mktabs.MkTab"]
  94272696055568["mktabcontainer.MkTabContainer"]
  94272696448176["mktabbedblocks.MkTabbedBlocks"]
  94272696052240["mktabbed.MkTabbed"]
  94272696037584["mkcritic.MkCritic"]
  94272696449952["mkannotations.MkAnnotation"]
  94272696450944["mkannotations.MkAnnotations"]
  94272696041696["mkfootnotes.MkFootNote"]
  94272696042688["mkfootnotes.MkFootNotes"]
  94272695186736["mkdefinitionlist.MkDefinition"]
  94272695187728["mkdefinitionlist.MkDefinitionList"]
  94272697760960["mkpage.MkPage"]
  94272696620096["mktemplatepage.MkTemplatePage"]
  94272695697136["mkclasspage.MkClassPage"]
  94272685612224["mkmodulepage.MkModulePage"]
  94272695540368["mkshowcase.MkShowcase"]
  94272695541360["mkspeechbubble.MkSpeechBubble"]
  94272695546016["mktasklist.MkTask"]
  94272695543920["mktasklist.MkTaskList"]
  94272697767520["mktimeline.MkTimeline"]
  94272696585680["mkshields.MkShields"]
  94272697676976["mkmetadatabadges.MkMetadataBadges"]
  94272697822880 --&gt; 94272697823872
  94272697823872 --&gt; 94272697825648
  94272697823872 --&gt; 94272696472784
  94272697823872 --&gt; 94272696053856
  94272697822880 --&gt; 94272694335584
  94272697822880 --&gt; 94272696473776
  94272697822880 --&gt; 94272696640432
  94272696640432 --&gt; 94272694448704
  94272694448704 --&gt; 94272695684016
  94272694448704 --&gt; 94272697404688
  94272696640432 --&gt; 94272695336816
  94272697822880 --&gt; 94272697537520
  94272697537520 --&gt; 94272697538512
  94272697537520 --&gt; 94272697539504
  94272697537520 --&gt; 94272697541280
  94272697537520 --&gt; 94272694075328
  94272697537520 --&gt; 94272695184960
  94272697537520 --&gt; 94272696989952
  94272697537520 --&gt; 94272695651600
  94272697537520 --&gt; 94272685594160
  94272697537520 --&gt; 94272697567008
  94272697537520 --&gt; 94272697571120
  94272697537520 --&gt; 94272697568000
  94272697537520 --&gt; 94272685600272
  94272697537520 --&gt; 94272695688352
  94272697537520 --&gt; 94272696841920
  94272697537520 --&gt; 94272695799728
  94272697537520 --&gt; 94272696839472
  94272697537520 --&gt; 94272696226496
  94272697822880 --&gt; 94272685831168
  94272697822880 --&gt; 94272694451264
  94272694451264 --&gt; 94272685834176
  94272694451264 --&gt; 94272696057664
  94272697822880 --&gt; 94272696444656
  94272697822880 --&gt; 94272696055568
  94272696055568 --&gt; 94272696448176
  94272696055568 --&gt; 94272696052240
  94272697822880 --&gt; 94272696037584
  94272697822880 --&gt; 94272696449952
  94272697822880 --&gt; 94272696450944
  94272697822880 --&gt; 94272696041696
  94272697822880 --&gt; 94272696042688
  94272697822880 --&gt; 94272695186736
  94272697822880 --&gt; 94272695187728
  94272697822880 --&gt; 94272697760960
  94272697760960 --&gt; 94272696620096
  94272696620096 --&gt; 94272695697136
  94272696620096 --&gt; 94272685612224
  94272697822880 --&gt; 94272695540368
  94272697822880 --&gt; 94272695541360
  94272697822880 --&gt; 94272695546016
  94272697822880 --&gt; 94272695543920
  94272697822880 --&gt; 94272697767520
  94272697822880 --&gt; 94272696585680
  94272697822880 --&gt; 94272697676976</code></pre>

Example: MRO diagram

Jinja

{{ _mk.MkTable | MkClassDiagram(mode="mro") }}

Python

MkClassDiagram(klass=MkTable, mode='mro', direction='TD')
graph TD
  94272685834176["mktable.MkTable"]
  94272694451264["mkbasetable.MkBaseTable"]
  94272697822880["mkcontainer.MkContainer"]
  94272697820320["mknode.MkNode"]
  94272697777776["node.Node"]
  139836355973312["builtins.object"]
  94272685834176 --> 94272694451264
  94272694451264 --> 94272697822880
  94272697822880 --> 94272697820320
  94272697820320 --> 94272697777776
  94272697777776 --> 139836355973312
```` mermaid
graph TD
  94272685834176["mktable.MkTable"]
  94272694451264["mkbasetable.MkBaseTable"]
  94272697822880["mkcontainer.MkContainer"]
  94272697820320["mknode.MkNode"]
  94272697777776["node.Node"]
  139836355973312["builtins.object"]
  94272685834176 --> 94272694451264
  94272694451264 --> 94272697822880
  94272697822880 --> 94272697820320
  94272697820320 --> 94272697777776
  94272697777776 --> 139836355973312
````
<pre class="mermaid"><code>graph TD
  94272685834176["mktable.MkTable"]
  94272694451264["mkbasetable.MkBaseTable"]
  94272697822880["mkcontainer.MkContainer"]
  94272697820320["mknode.MkNode"]
  94272697777776["node.Node"]
  139836355973312["builtins.object"]
  94272685834176 --&gt; 94272694451264
  94272694451264 --&gt; 94272697822880
  94272697822880 --&gt; 94272697820320
  94272697820320 --&gt; 94272697777776
  94272697777776 --&gt; 139836355973312</code></pre>

Bases: MkDiagram

__init__

__init__(
    klass: type | str | Class,
    mode: DiagramModeStr = "baseclasses",
    direction: Literal["TD", "DT", "LR", "RL"] = "TD",
    max_depth: int | None = None,
    **kwargs: Any
)

Parameters:

Name Type Description Default
klass type | str | Class

Klass to show a diagram for

required
mode DiagramModeStr

What kind of diagram to display

'baseclasses'
direction Literal['TD', 'DT', 'LR', 'RL']

diagram direction

'TD'
max_depth int | None

Maxium depth to display

None
kwargs Any

Keyword arguments passed to parent

{}
Name Children Inherits
MkDiagram
mknodes.basenodes.mkdiagram
Class representing a mermaid diagram.
graph TD
  94272695684016["mkclassdiagram.MkClassDiagram"]
  94272694448704["mkdiagram.MkDiagram"]
  94272696640432["mkcode.MkCode"]
  94272697822880["mkcontainer.MkContainer"]
  94272697820320["mknode.MkNode"]
  94272697777776["node.Node"]
  139836355973312["builtins.object"]
  94272694448704 --> 94272695684016
  94272696640432 --> 94272694448704
  94272697822880 --> 94272696640432
  94272697820320 --> 94272697822880
  94272697777776 --> 94272697820320
  139836355973312 --> 94272697777776
/home/runner/work/mknodes/mknodes/mknodes/templatenodes/mkclassdiagram/metadata.toml
[metadata]
icon = "mdi:graph-outline"
name = "MkClassDiagram"
group = "diagram"

[[requirements.extension."pymdownx.superfences".custom_fences]]
name = "mermaid"
class = "mermaid"
format = "pymdownx.superfences.fence_code_format"

[examples.baseclass_diagram]
title = "Baseclass diagram"
jinja = """
{{ _mk.MkClassDiagram | MkClassDiagram(mode="baseclasses") }}
"""

[examples.subclass_diagram]
title = "Subclass diagram"
jinja = """
{{ _mk.MkContainer | MkClassDiagram(mode="subclasses", direction="LR") }}
"""

[examples.mro_diagram]
title = "MRO diagram"
jinja = """
{{ _mk.MkTable | MkClassDiagram(mode="mro") }}
"""

[output.markdown]
template = """
{{ node.fence_boundary }} mermaid
graph {{ node.direction }}
{% for identifier, title in node.builder.items | zip(node.builder.titles) %}
  {{ identifier }}["{{ title }}"]
{% endfor %}
{% for a, b in node.builder.connections %}
  {{ a }} --> {{ b }}
{% endfor %}
{{ node.fence_boundary }}
"""
mknodes.templatenodes.mkclassdiagram.MkClassDiagram
class MkClassDiagram(mkdiagram.MkDiagram):
    """Node to display the class hierarchy of a class. Supports multiple modes."""

    def __init__(
        self,
        klass: type | str | griffe.Class,
        mode: DiagramModeStr = "baseclasses",
        direction: Literal["TD", "DT", "LR", "RL"] = "TD",
        max_depth: int | None = None,
        **kwargs: Any,
    ):
        """Constructor.

        Args:
            klass: Klass to show a diagram for
            mode: What kind of diagram to display
            direction: diagram direction
            max_depth: Maxium depth to display
            kwargs: Keyword arguments passed to parent
        """
        self.klass = klass
        self.mode = mode
        self._max_depth = max_depth
        super().__init__(direction=direction, **kwargs)

    def __repr__(self):
        return reprhelpers.get_repr(
            self,
            klass=self.klass,
            mode=self.mode,
            direction=self.direction,
        )

    @property
    def builder(self):
        klass = classhelpers.to_class(self.klass)
        match self.mode:
            case "subclasses":
                return SubclassConnector(klass, max_depth=self._max_depth)
            case "baseclasses":
                return ParentClassConnector(klass, max_depth=self._max_depth)
            case "mro":
                return MroConnector(klass, max_depth=self._max_depth)
            case _:
                raise ValueError(self.mode)

    @property
    def mermaid_code(self) -> str:
        return self.builder.get_graph_connection_text()