-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathschema-uml.drawio
More file actions
103 lines (103 loc) · 19 KB
/
Copy pathschema-uml.drawio
File metadata and controls
103 lines (103 loc) · 19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<mxfile host="65bd71144e">
<diagram id="cP3nQLXQUzaVoHXPkzMq" name="analysis.json schema">
<mxGraphModel dx="1734" dy="1760" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="1100" pageHeight="850" math="0" shadow="0" adaptiveColors="auto">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="title" value="<b>CLDK Python — analysis.json schema (primary containment tree)</b><br><font color="#6f6f6f">source: codeanalyzer/schema/py_schema.py · root = PyApplication · ◆──▷ owns / contains · ↺ recursive</font>" style="text;html=1;align=left;verticalAlign=middle;fontSize=20;fontFamily=IBM Plex Sans;fontColor=light-dark(#161616,#f4f4f4);" parent="1" vertex="1">
<mxGeometry x="40" y="-120" width="1400" height="50" as="geometry"/>
</mxCell>
<mxCell id="legend" value="<b>Legend</b><hr>◆──▷ composition (owns / contains)<br>↺ self-loop = recursive nesting<br><br>This is the PRIMARY containment tree (one parent<br>per type → no crossing edges). Cross-links such as<br>PyClass.methods → PyCallable and<br>PyCallable.local_variables → PyVariableDeclaration<br>are listed as fields, not drawn, to keep the tree readable.<br><br><b>Layout</b><br>columns = containment depth; edges run only<br>between adjacent columns, in the empty channel.<br><br><b>Notation</b><br>X[] = list · {str → X} = Dict · X? = Optional<br>span: = source position (start/end line/col)<br><br><b>Tiers</b><br>red = root · blue = file<br>teal = declarations · gray = leaf records<br>purple = call graph" style="rounded=8;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacingLeft=12;spacingRight=10;spacingTop=8;spacingBottom=8;fontFamily=IBM Plex Sans;fontSize=12;fontColor=light-dark(#161616,#f4f4f4);fillColor=light-dark(#ffffff,#1a1a1a);strokeColor=light-dark(#8d8d8d,#6f6f6f);" parent="1" vertex="1">
<mxGeometry x="40" y="40" width="380" height="420" as="geometry"/>
</mxCell>
<mxCell id="app" value="<b>PyApplication</b> «root»<hr>symbol_table: {str → PyModule}<br>call_graph: PyCallEdge[]" style="rounded=8;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacingLeft=12;spacingRight=10;spacingTop=8;spacingBottom=8;fontFamily=IBM Plex Sans;fontSize=12;fontColor=light-dark(#161616,#f4f4f4);shadow=0;fillColor=light-dark(#fff1f1,#4b1a1f);strokeColor=light-dark(#da1e28,#fa4d56);" parent="1" vertex="1">
<mxGeometry x="480" y="540" width="300" height="90" as="geometry"/>
</mxCell>
<mxCell id="mod" value="<b>PyModule</b> «file»<hr>file_path: str<br>module_name: str<br>imports: PyImport[]<br>comments: PyComment[]<br>classes: {str → PyClass}<br>functions: {str → PyCallable}<br>variables: PyVariableDeclaration[]<br>cache: content_hash?, last_modified?, file_size?" style="rounded=8;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacingLeft=12;spacingRight=10;spacingTop=8;spacingBottom=8;fontFamily=IBM Plex Sans;fontSize=12;fontColor=light-dark(#161616,#f4f4f4);shadow=0;fillColor=light-dark(#edf5ff,#1c2a3f);strokeColor=light-dark(#0f62fe,#4589ff);" parent="1" vertex="1">
<mxGeometry x="940" y="355" width="320" height="220" as="geometry"/>
</mxCell>
<mxCell id="edge" value="<b>PyCallEdge</b> «call graph»<hr>source: str (caller signature)<br>target: str (callee signature)<br>type: "CALL_DEP"<br>weight: int<br>provenance: (jedi | codeql | joern)[]<br><font color="#6f6f6f">endpoints absent from symbol_table<br>become :External ghost nodes</font>" style="rounded=8;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacingLeft=12;spacingRight=10;spacingTop=8;spacingBottom=8;fontFamily=IBM Plex Sans;fontSize=12;fontColor=light-dark(#161616,#f4f4f4);shadow=0;fillColor=light-dark(#f6f2ff,#2a1a3a);strokeColor=light-dark(#8a3ffc,#be95ff);" parent="1" vertex="1">
<mxGeometry x="940" y="620" width="320" height="170" as="geometry"/>
</mxCell>
<mxCell id="imp" value="<b>PyImport</b><hr>module: str<br>name: str<br>alias: str?<br>span: line/col" style="rounded=8;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacingLeft=12;spacingRight=10;spacingTop=8;spacingBottom=8;fontFamily=IBM Plex Sans;fontSize=12;fontColor=light-dark(#161616,#f4f4f4);shadow=0;fillColor=light-dark(#f2f4f8,#2a2a2a);strokeColor=light-dark(#8d8d8d,#6f6f6f);" parent="1" vertex="1">
<mxGeometry x="1420" y="40" width="360" height="120" as="geometry"/>
</mxCell>
<mxCell id="comment" value="<b>PyComment</b><hr>content: str<br>is_docstring: bool<br>span: line/col" style="rounded=8;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacingLeft=12;spacingRight=10;spacingTop=8;spacingBottom=8;fontFamily=IBM Plex Sans;fontSize=12;fontColor=light-dark(#161616,#f4f4f4);shadow=0;fillColor=light-dark(#f2f4f8,#2a2a2a);strokeColor=light-dark(#8d8d8d,#6f6f6f);" parent="1" vertex="1">
<mxGeometry x="1420" y="200" width="360" height="110" as="geometry"/>
</mxCell>
<mxCell id="cls" value="<b>PyClass</b> «recursive»<hr>name: str<br>signature: str<br>comments: PyComment[]<br>code: str?<br>base_classes: str[]<br><font color="#6f6f6f">methods: {str → PyCallable} (cross-link)</font><br>attributes: {str → PyClassAttribute}<br>inner_classes: {str → PyClass}<br>span: start/end line" style="rounded=8;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacingLeft=12;spacingRight=10;spacingTop=8;spacingBottom=8;fontFamily=IBM Plex Sans;fontSize=12;fontColor=light-dark(#161616,#f4f4f4);shadow=0;fillColor=light-dark(#d9fbfb,#0c2b2b);strokeColor=light-dark(#007d79,#08bdba);" parent="1" vertex="1">
<mxGeometry x="1420" y="350" width="360" height="230" as="geometry"/>
</mxCell>
<mxCell id="call" value="<b>PyCallable</b> «recursive»<hr>name: str<br>path: str<br>signature: str (call-graph node id)<br>comments: PyComment[]<br>decorators: str[]<br>parameters: PyCallableParameter[]<br>return_type: str?<br>code: str?<br>code_start_line: int<br>accessed_symbols: PySymbol[]<br>call_sites: PyCallsite[]<br>inner_callables: {str → PyCallable}<br>inner_classes: {str → PyClass}<br><font color="#6f6f6f">local_variables: PyVariableDeclaration[] (cross-link)</font><br>cyclomatic_complexity: int<br>span: start/end line" style="rounded=8;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacingLeft=12;spacingRight=10;spacingTop=8;spacingBottom=8;fontFamily=IBM Plex Sans;fontSize=12;fontColor=light-dark(#161616,#f4f4f4);shadow=0;fillColor=light-dark(#d9fbfb,#0c2b2b);strokeColor=light-dark(#007d79,#08bdba);" parent="1" vertex="1">
<mxGeometry x="1420" y="620" width="360" height="400" as="geometry"/>
</mxCell>
<mxCell id="vard" value="<b>PyVariableDeclaration</b><hr>name: str<br>type: str?<br>initializer: str?<br>value: Any?<br>scope: module | class | function<br>span: start/end line/col" style="rounded=8;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacingLeft=12;spacingRight=10;spacingTop=8;spacingBottom=8;fontFamily=IBM Plex Sans;fontSize=12;fontColor=light-dark(#161616,#f4f4f4);shadow=0;fillColor=light-dark(#f2f4f8,#2a2a2a);strokeColor=light-dark(#8d8d8d,#6f6f6f);" parent="1" vertex="1">
<mxGeometry x="1420" y="1060" width="360" height="160" as="geometry"/>
</mxCell>
<mxCell id="attr" value="<b>PyClassAttribute</b><hr>name: str<br>type: str?<br>comments: PyComment[]<br>span: start/end line" style="rounded=8;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacingLeft=12;spacingRight=10;spacingTop=8;spacingBottom=8;fontFamily=IBM Plex Sans;fontSize=12;fontColor=light-dark(#161616,#f4f4f4);shadow=0;fillColor=light-dark(#f2f4f8,#2a2a2a);strokeColor=light-dark(#8d8d8d,#6f6f6f);" parent="1" vertex="1">
<mxGeometry x="1920" y="350" width="320" height="120" as="geometry"/>
</mxCell>
<mxCell id="param" value="<b>PyCallableParameter</b><hr>name: str<br>type: str?<br>default_value: str?<br>span: start/end line/col" style="rounded=8;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacingLeft=12;spacingRight=10;spacingTop=8;spacingBottom=8;fontFamily=IBM Plex Sans;fontSize=12;fontColor=light-dark(#161616,#f4f4f4);shadow=0;fillColor=light-dark(#f2f4f8,#2a2a2a);strokeColor=light-dark(#8d8d8d,#6f6f6f);" parent="1" vertex="1">
<mxGeometry x="1920" y="620" width="320" height="130" as="geometry"/>
</mxCell>
<mxCell id="callsite" value="<b>PyCallsite</b><hr>method_name: str<br>receiver_expr: str?<br>receiver_type: str?<br>argument_types: str[]<br>return_type: str?<br>callee_signature: str?<br>is_constructor_call: bool<br>span: start/end line/col" style="rounded=8;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacingLeft=12;spacingRight=10;spacingTop=8;spacingBottom=8;fontFamily=IBM Plex Sans;fontSize=12;fontColor=light-dark(#161616,#f4f4f4);shadow=0;fillColor=light-dark(#f2f4f8,#2a2a2a);strokeColor=light-dark(#8d8d8d,#6f6f6f);" parent="1" vertex="1">
<mxGeometry x="1920" y="790" width="320" height="167" as="geometry"/>
</mxCell>
<mxCell id="symbol" value="<b>PySymbol</b><hr>name: str<br>scope: local | nonlocal | global | class | module<br>kind: variable | parameter | attribute | function | class | module<br>type: str?<br>qualified_name: str?<br>is_builtin: bool<br>span: lineno/col_offset" style="rounded=8;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacingLeft=12;spacingRight=10;spacingTop=8;spacingBottom=8;fontFamily=IBM Plex Sans;fontSize=12;fontColor=light-dark(#161616,#f4f4f4);shadow=0;fillColor=light-dark(#f2f4f8,#2a2a2a);strokeColor=light-dark(#8d8d8d,#6f6f6f);" parent="1" vertex="1">
<mxGeometry x="1920" y="1030" width="320" height="180" as="geometry"/>
</mxCell>
<mxCell id="e_app_mod" value="symbol_table {str → ·}" style="endArrow=blockThin;endFill=1;startArrow=diamondThin;startFill=1;html=1;rounded=1;exitX=1;exitY=0.3;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontFamily=IBM Plex Sans;fontSize=11;strokeColor=light-dark(#525252,#a8a8a8);fontColor=light-dark(#525252,#a8a8a8);labelBackgroundColor=light-dark(#f2f4f8,#262626);labelBorderColor=none;edgeStyle=orthogonalEdgeStyle;curved=0;" parent="1" source="app" target="mod" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e_app_edge" value="call_graph[]" style="endArrow=blockThin;endFill=1;startArrow=diamondThin;startFill=1;html=1;rounded=1;exitX=1;exitY=0.7;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontFamily=IBM Plex Sans;fontSize=11;strokeColor=light-dark(#8a3ffc,#be95ff);fontColor=light-dark(#525252,#a8a8a8);labelBackgroundColor=light-dark(#f2f4f8,#262626);labelBorderColor=none;edgeStyle=orthogonalEdgeStyle;curved=0;" parent="1" source="app" target="edge" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e_mod_imp" value="imports[]" style="endArrow=blockThin;endFill=1;startArrow=diamondThin;startFill=1;html=1;rounded=1;exitX=1;exitY=0.1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontFamily=IBM Plex Sans;fontSize=11;strokeColor=light-dark(#525252,#a8a8a8);fontColor=light-dark(#525252,#a8a8a8);labelBackgroundColor=light-dark(#f2f4f8,#262626);labelBorderColor=none;edgeStyle=orthogonalEdgeStyle;curved=0;" parent="1" source="mod" target="imp" edge="1">
<mxGeometry x="0.8215" relative="1" as="geometry">
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="e_mod_comment" value="comments[]" style="endArrow=blockThin;endFill=1;startArrow=diamondThin;startFill=1;html=1;rounded=1;exitX=1;exitY=0.3;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontFamily=IBM Plex Sans;fontSize=11;strokeColor=light-dark(#525252,#a8a8a8);fontColor=light-dark(#525252,#a8a8a8);labelBackgroundColor=light-dark(#f2f4f8,#262626);labelBorderColor=none;edgeStyle=orthogonalEdgeStyle;curved=0;" parent="1" source="mod" target="comment" edge="1">
<mxGeometry x="0.7546" relative="1" as="geometry">
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="e_mod_cls" value="classes {str → ·}" style="endArrow=blockThin;endFill=1;startArrow=diamondThin;startFill=1;html=1;rounded=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontFamily=IBM Plex Sans;fontSize=11;strokeColor=light-dark(#525252,#a8a8a8);fontColor=light-dark(#525252,#a8a8a8);labelBackgroundColor=light-dark(#f2f4f8,#262626);labelBorderColor=none;edgeStyle=orthogonalEdgeStyle;curved=0;" parent="1" source="mod" target="cls" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e_mod_call" value="functions {str → ·}" style="endArrow=blockThin;endFill=1;startArrow=diamondThin;startFill=1;html=1;rounded=1;exitX=1;exitY=0.7;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontFamily=IBM Plex Sans;fontSize=11;strokeColor=light-dark(#525252,#a8a8a8);fontColor=light-dark(#525252,#a8a8a8);labelBackgroundColor=light-dark(#f2f4f8,#262626);labelBorderColor=none;edgeStyle=orthogonalEdgeStyle;curved=0;" parent="1" source="mod" target="call" edge="1">
<mxGeometry x="0.5966" relative="1" as="geometry">
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="e_mod_vard" value="variables[]" style="endArrow=blockThin;endFill=1;startArrow=diamondThin;startFill=1;html=1;rounded=1;exitX=1;exitY=0.9;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontFamily=IBM Plex Sans;fontSize=11;strokeColor=light-dark(#525252,#a8a8a8);fontColor=light-dark(#525252,#a8a8a8);labelBackgroundColor=light-dark(#f2f4f8,#262626);labelBorderColor=none;edgeStyle=orthogonalEdgeStyle;curved=0;" parent="1" source="mod" target="vard" edge="1">
<mxGeometry x="0.8956" relative="1" as="geometry">
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="e_cls_attr" value="attributes {str → ·}" style="endArrow=blockThin;endFill=1;startArrow=diamondThin;startFill=1;html=1;rounded=1;exitX=1;exitY=0.65;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontFamily=IBM Plex Sans;fontSize=11;strokeColor=light-dark(#007d79,#08bdba);fontColor=light-dark(#525252,#a8a8a8);labelBackgroundColor=light-dark(#f2f4f8,#262626);labelBorderColor=none;edgeStyle=orthogonalEdgeStyle;curved=0;" parent="1" source="cls" target="attr" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e_call_param" value="parameters[]" style="endArrow=blockThin;endFill=1;startArrow=diamondThin;startFill=1;html=1;rounded=1;exitX=1;exitY=0.45;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontFamily=IBM Plex Sans;fontSize=11;strokeColor=light-dark(#007d79,#08bdba);fontColor=light-dark(#525252,#a8a8a8);labelBackgroundColor=light-dark(#f2f4f8,#262626);labelBorderColor=none;edgeStyle=orthogonalEdgeStyle;curved=0;" parent="1" source="call" target="param" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e_call_callsite" value="call_sites[]" style="endArrow=blockThin;endFill=1;startArrow=diamondThin;startFill=1;html=1;rounded=1;exitX=1;exitY=0.65;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontFamily=IBM Plex Sans;fontSize=11;strokeColor=light-dark(#007d79,#08bdba);fontColor=light-dark(#525252,#a8a8a8);labelBackgroundColor=light-dark(#f2f4f8,#262626);labelBorderColor=none;edgeStyle=orthogonalEdgeStyle;curved=0;" parent="1" source="call" target="callsite" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e_call_symbol" value="accessed_symbols[]" style="endArrow=blockThin;endFill=1;startArrow=diamondThin;startFill=1;html=1;rounded=1;exitX=1;exitY=0.92;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontFamily=IBM Plex Sans;fontSize=11;strokeColor=light-dark(#007d79,#08bdba);fontColor=light-dark(#525252,#a8a8a8);labelBackgroundColor=light-dark(#f2f4f8,#262626);labelBorderColor=none;edgeStyle=orthogonalEdgeStyle;curved=0;" parent="1" source="call" target="symbol" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e_cls_self" value="↺ inner_classes" style="endArrow=blockThin;endFill=1;startArrow=diamondThin;startFill=1;html=1;rounded=1;exitX=1;exitY=0.15;exitDx=0;exitDy=0;entryX=1;entryY=0.38;entryDx=0;entryDy=0;fontFamily=IBM Plex Sans;fontSize=11;strokeColor=light-dark(#007d79,#08bdba);fontColor=light-dark(#525252,#a8a8a8);labelBackgroundColor=light-dark(#f2f4f8,#262626);labelBorderColor=none;edgeStyle=orthogonalEdgeStyle;curved=0;" parent="1" source="cls" target="cls" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1826" y="411"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="e_call_self" value="↺ inner_callables" style="endArrow=blockThin;endFill=1;startArrow=diamondThin;startFill=1;html=1;rounded=1;exitX=1;exitY=0.12;exitDx=0;exitDy=0;entryX=1;entryY=0.3;entryDx=0;entryDy=0;fontFamily=IBM Plex Sans;fontSize=11;strokeColor=light-dark(#007d79,#08bdba);fontColor=light-dark(#525252,#a8a8a8);labelBackgroundColor=light-dark(#f2f4f8,#262626);labelBorderColor=none;edgeStyle=orthogonalEdgeStyle;curved=0;" parent="1" source="call" target="call" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>