PyDecisionGraph 0.3.2.post1__cp315-cp315-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- decision_graph/__infra__.pxd +1 -0
- decision_graph/__init__.pxd +1 -0
- decision_graph/__init__.py +39 -0
- decision_graph/decision_tree/__init__.pxd +2 -0
- decision_graph/decision_tree/__init__.py +85 -0
- decision_graph/decision_tree/bake/__infra__.pxd +502 -0
- decision_graph/decision_tree/bake/__init__.pxd +502 -0
- decision_graph/decision_tree/bake/__init__.py +29 -0
- decision_graph/decision_tree/bake/c_action.cp315-win_amd64.pyd +0 -0
- decision_graph/decision_tree/bake/c_action.h +324 -0
- decision_graph/decision_tree/bake/c_action.pxd +54 -0
- decision_graph/decision_tree/bake/c_action.pyi +126 -0
- decision_graph/decision_tree/bake/c_action.pyx +65 -0
- decision_graph/decision_tree/bake/c_allocator_protocol.cp315-win_amd64.pyd +0 -0
- decision_graph/decision_tree/bake/c_allocator_protocol.pxd +24 -0
- decision_graph/decision_tree/bake/c_allocator_protocol.pyi +61 -0
- decision_graph/decision_tree/bake/c_allocator_protocol.pyx +109 -0
- decision_graph/decision_tree/bake/c_bake.cp315-win_amd64.pyd +0 -0
- decision_graph/decision_tree/bake/c_bake.h +629 -0
- decision_graph/decision_tree/bake/c_bake.pxd +52 -0
- decision_graph/decision_tree/bake/c_bake.pyi +151 -0
- decision_graph/decision_tree/bake/c_bake.pyx +142 -0
- decision_graph/decision_tree/bake/c_collections.cp315-win_amd64.pyd +0 -0
- decision_graph/decision_tree/bake/c_collections.h +692 -0
- decision_graph/decision_tree/bake/c_collections.pxd +52 -0
- decision_graph/decision_tree/bake/c_collections.pyi +193 -0
- decision_graph/decision_tree/bake/c_collections.pyx +161 -0
- decision_graph/decision_tree/bake/c_const.cp315-win_amd64.pyd +0 -0
- decision_graph/decision_tree/bake/c_const.h +395 -0
- decision_graph/decision_tree/bake/c_const.pxd +56 -0
- decision_graph/decision_tree/bake/c_const.pyi +305 -0
- decision_graph/decision_tree/bake/c_const.pyx +278 -0
- decision_graph/decision_tree/bake/c_edge.cp315-win_amd64.pyd +0 -0
- decision_graph/decision_tree/bake/c_edge.h +511 -0
- decision_graph/decision_tree/bake/c_edge.pxd +117 -0
- decision_graph/decision_tree/bake/c_edge.pyi +192 -0
- decision_graph/decision_tree/bake/c_edge.pyx +270 -0
- decision_graph/decision_tree/bake/c_eval.h +848 -0
- decision_graph/decision_tree/bake/c_eval.pxd +40 -0
- decision_graph/decision_tree/bake/c_expr.cp315-win_amd64.pyd +0 -0
- decision_graph/decision_tree/bake/c_expr.h +1900 -0
- decision_graph/decision_tree/bake/c_expr.pxd +129 -0
- decision_graph/decision_tree/bake/c_expr.pyi +280 -0
- decision_graph/decision_tree/bake/c_expr.pyx +272 -0
- decision_graph/decision_tree/bake/c_hierarchy.cp315-win_amd64.pyd +0 -0
- decision_graph/decision_tree/bake/c_hierarchy.h +731 -0
- decision_graph/decision_tree/bake/c_hierarchy.pxd +71 -0
- decision_graph/decision_tree/bake/c_hierarchy.pyi +409 -0
- decision_graph/decision_tree/bake/c_hierarchy.pyx +277 -0
- decision_graph/decision_tree/bake/c_logic_group.cp315-win_amd64.pyd +0 -0
- decision_graph/decision_tree/bake/c_logic_group.h +1226 -0
- decision_graph/decision_tree/bake/c_logic_group.pxd +162 -0
- decision_graph/decision_tree/bake/c_logic_group.pyi +264 -0
- decision_graph/decision_tree/bake/c_logic_group.pyx +308 -0
- decision_graph/decision_tree/bake/c_node.cp315-win_amd64.pyd +0 -0
- decision_graph/decision_tree/bake/c_node.h +2660 -0
- decision_graph/decision_tree/bake/c_node.pxd +381 -0
- decision_graph/decision_tree/bake/c_node.pyi +438 -0
- decision_graph/decision_tree/bake/c_node.pyx +639 -0
- decision_graph/decision_tree/bake/c_reconstruct.cp315-win_amd64.pyd +0 -0
- decision_graph/decision_tree/bake/c_reconstruct.pxd +63 -0
- decision_graph/decision_tree/bake/c_reconstruct.pyi +60 -0
- decision_graph/decision_tree/bake/c_reconstruct.pyx +252 -0
- decision_graph/decision_tree/bake/c_var.cp315-win_amd64.pyd +0 -0
- decision_graph/decision_tree/bake/c_var.h +2054 -0
- decision_graph/decision_tree/bake/c_var.pxd +205 -0
- decision_graph/decision_tree/bake/c_var.pyi +271 -0
- decision_graph/decision_tree/bake/c_var.pyx +228 -0
- decision_graph/decision_tree/capi/__infra__.pxd +33 -0
- decision_graph/decision_tree/capi/__init__.pxd +33 -0
- decision_graph/decision_tree/capi/__init__.py +57 -0
- decision_graph/decision_tree/capi/c_abc.cp315-win_amd64.pyd +0 -0
- decision_graph/decision_tree/capi/c_abc.pxd +246 -0
- decision_graph/decision_tree/capi/c_abc.pyi +770 -0
- decision_graph/decision_tree/capi/c_abc.pyx +1532 -0
- decision_graph/decision_tree/capi/c_collection.cp315-win_amd64.pyd +0 -0
- decision_graph/decision_tree/capi/c_collection.pxd +22 -0
- decision_graph/decision_tree/capi/c_collection.pyi +245 -0
- decision_graph/decision_tree/capi/c_collection.pyx +138 -0
- decision_graph/decision_tree/capi/c_node.cp315-win_amd64.pyd +0 -0
- decision_graph/decision_tree/capi/c_node.pxd +95 -0
- decision_graph/decision_tree/capi/c_node.pyi +492 -0
- decision_graph/decision_tree/capi/c_node.pyx +551 -0
- decision_graph/decision_tree/exc.py +189 -0
- decision_graph/decision_tree/native/__init__.py +57 -0
- decision_graph/decision_tree/native/abc.py +1167 -0
- decision_graph/decision_tree/native/collection.py +134 -0
- decision_graph/decision_tree/native/node.py +521 -0
- decision_graph/includes/decision_graph/decision_tree/bake/c_action.c +16320 -0
- decision_graph/includes/decision_graph/decision_tree/bake/c_action.h +324 -0
- decision_graph/includes/decision_graph/decision_tree/bake/c_allocator_protocol.c +12473 -0
- decision_graph/includes/decision_graph/decision_tree/bake/c_bake.c +16485 -0
- decision_graph/includes/decision_graph/decision_tree/bake/c_bake.h +629 -0
- decision_graph/includes/decision_graph/decision_tree/bake/c_collections.c +17381 -0
- decision_graph/includes/decision_graph/decision_tree/bake/c_collections.h +692 -0
- decision_graph/includes/decision_graph/decision_tree/bake/c_const.c +20815 -0
- decision_graph/includes/decision_graph/decision_tree/bake/c_const.h +395 -0
- decision_graph/includes/decision_graph/decision_tree/bake/c_edge.c +20696 -0
- decision_graph/includes/decision_graph/decision_tree/bake/c_edge.h +511 -0
- decision_graph/includes/decision_graph/decision_tree/bake/c_eval.h +848 -0
- decision_graph/includes/decision_graph/decision_tree/bake/c_expr.c +22065 -0
- decision_graph/includes/decision_graph/decision_tree/bake/c_expr.h +1900 -0
- decision_graph/includes/decision_graph/decision_tree/bake/c_hierarchy.c +23267 -0
- decision_graph/includes/decision_graph/decision_tree/bake/c_hierarchy.h +731 -0
- decision_graph/includes/decision_graph/decision_tree/bake/c_logic_group.c +22434 -0
- decision_graph/includes/decision_graph/decision_tree/bake/c_logic_group.h +1226 -0
- decision_graph/includes/decision_graph/decision_tree/bake/c_node.c +28385 -0
- decision_graph/includes/decision_graph/decision_tree/bake/c_node.h +2660 -0
- decision_graph/includes/decision_graph/decision_tree/bake/c_reconstruct.c +15955 -0
- decision_graph/includes/decision_graph/decision_tree/bake/c_var.c +16881 -0
- decision_graph/includes/decision_graph/decision_tree/bake/c_var.h +2054 -0
- decision_graph/includes/decision_graph/decision_tree/capi/c_abc.c +59196 -0
- decision_graph/includes/decision_graph/decision_tree/capi/c_collection.c +19967 -0
- decision_graph/includes/decision_graph/decision_tree/capi/c_node.c +39229 -0
- decision_graph/logic_group/__init__.py +25 -0
- decision_graph/logic_group/base.py +100 -0
- decision_graph/logic_group/pending_request.py +384 -0
- decision_graph/webui/__init__.py +24 -0
- decision_graph/webui/bake/__init__.py +65 -0
- decision_graph/webui/bake/app.py +488 -0
- decision_graph/webui/bake/static/d3.v7.min.js +2 -0
- decision_graph/webui/bake/static/script.js +1440 -0
- decision_graph/webui/bake/static/style.css +920 -0
- decision_graph/webui/bake/templates/index.html +183 -0
- decision_graph/webui/bake/templates/offline.html +184 -0
- decision_graph/webui/capi/__init__.py +54 -0
- decision_graph/webui/capi/app.py +366 -0
- decision_graph/webui/capi/main.py +53 -0
- decision_graph/webui/capi/static/d3.v7.min.js +2 -0
- decision_graph/webui/capi/static/script.js +1026 -0
- decision_graph/webui/capi/static/style.css +656 -0
- decision_graph/webui/capi/templates/index.html +93 -0
- decision_graph/webui/capi/templates/offline.html +94 -0
- decision_graph/webui/native/__init__.py +54 -0
- decision_graph/webui/native/app.py +366 -0
- decision_graph/webui/native/main.py +53 -0
- decision_graph/webui/native/static/d3.v7.min.js +2 -0
- decision_graph/webui/native/static/script.js +1026 -0
- decision_graph/webui/native/static/style.css +656 -0
- decision_graph/webui/native/templates/index.html +93 -0
- decision_graph/webui/native/templates/offline.html +94 -0
- pydecisiongraph-0.3.2.post1.dist-info/METADATA +136 -0
- pydecisiongraph-0.3.2.post1.dist-info/RECORD +148 -0
- pydecisiongraph-0.3.2.post1.dist-info/WHEEL +5 -0
- pydecisiongraph-0.3.2.post1.dist-info/licenses/LICENSE +373 -0
- pydecisiongraph-0.3.2.post1.dist-info/top_level.txt +2 -0
- tests/bake_c_evaluator.cp315-win_amd64.pyd +0 -0
- tests/bake_eval_probe.cp315-win_amd64.pyd +0 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>Decision Tree Visualizer</title>
|
|
7
|
+
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
|
|
8
|
+
<script src="{{ url_for('static', filename='d3.v7.min.js') }}"></script>
|
|
9
|
+
</head>
|
|
10
|
+
<body>
|
|
11
|
+
<div id="header">
|
|
12
|
+
<h1>Decision Tree Visualization (Tree ID: {{ tree_id }})</h1>
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
<!-- Main layout: vertical sidebar (logic groups) + content -->
|
|
16
|
+
<div id="main">
|
|
17
|
+
<!-- Vertical nav sidebar for logic groups -->
|
|
18
|
+
<aside id="logic-group-tabs" role="region" aria-label="Logic groups">
|
|
19
|
+
<button class="tab-button active" data-group="*">All</button>
|
|
20
|
+
<!-- Other tabs inserted by JS -->
|
|
21
|
+
</aside>
|
|
22
|
+
|
|
23
|
+
<!-- Content area: controls bar + tree -->
|
|
24
|
+
<div id="content">
|
|
25
|
+
<!-- Controls bar: left = highlight toggle, right = export/theme buttons -->
|
|
26
|
+
<div id="controls-bar">
|
|
27
|
+
<!-- highlight-control will be injected by JS if window.with_eval is true -->
|
|
28
|
+
<!-- export controls will be injected here by script.js -->
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
<!-- Tree Container (no native scrollbars; zoom/pan handles navigation) -->
|
|
32
|
+
<div id="tree-container"
|
|
33
|
+
data-initial-tree='{{ initial_tree_data | tojson | e }}'
|
|
34
|
+
data-tree-id="{{ tree_id }}">
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
</div>
|
|
38
|
+
|
|
39
|
+
<div id="node-info" style="display: none;">
|
|
40
|
+
<div class="node-info-header">
|
|
41
|
+
<h3>Node Details</h3>
|
|
42
|
+
<button id="node-info-pin" title="Pin">📌</button>
|
|
43
|
+
</div>
|
|
44
|
+
<div class="node-info-body">
|
|
45
|
+
<table class="node-info-table">
|
|
46
|
+
<tbody>
|
|
47
|
+
<tr>
|
|
48
|
+
<td class="node-info-label">ID</td>
|
|
49
|
+
<td class="node-info-value" id="info-id"></td>
|
|
50
|
+
</tr>
|
|
51
|
+
<tr>
|
|
52
|
+
<td class="node-info-label">Name</td>
|
|
53
|
+
<td class="node-info-value" id="info-name"></td>
|
|
54
|
+
</tr>
|
|
55
|
+
<tr>
|
|
56
|
+
<td class="node-info-label">Repr</td>
|
|
57
|
+
<td class="node-info-value" id="info-repr"></td>
|
|
58
|
+
</tr>
|
|
59
|
+
<tr>
|
|
60
|
+
<td class="node-info-label">Type</td>
|
|
61
|
+
<td class="node-info-value" id="info-type"></td>
|
|
62
|
+
</tr>
|
|
63
|
+
<tr>
|
|
64
|
+
<td class="node-info-label">Labels</td>
|
|
65
|
+
<td class="node-info-value" id="info-labels"></td>
|
|
66
|
+
</tr>
|
|
67
|
+
<tr>
|
|
68
|
+
<td class="node-info-label">Autogen</td>
|
|
69
|
+
<td class="node-info-value" id="info-autogen"></td>
|
|
70
|
+
</tr>
|
|
71
|
+
<tr>
|
|
72
|
+
<td class="node-info-label">Expression</td>
|
|
73
|
+
<td class="node-info-value" id="info-expr"></td>
|
|
74
|
+
</tr>
|
|
75
|
+
</tbody>
|
|
76
|
+
</table>
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
|
|
80
|
+
<script>
|
|
81
|
+
window.with_eval = {{ 'true' if with_eval else 'false' }};
|
|
82
|
+
window.with_watch = {{ 'true' if with_watch else 'false' }};
|
|
83
|
+
</script>
|
|
84
|
+
|
|
85
|
+
<script src="{{ url_for('static', filename='script.js') }}"></script>
|
|
86
|
+
<script>
|
|
87
|
+
const container = d3.select("#tree-container");
|
|
88
|
+
const initialTreeData = JSON.parse(container.attr("data-initial-tree"));
|
|
89
|
+
const treeId = container.attr("data-tree-id");
|
|
90
|
+
visualizeTree(initialTreeData);
|
|
91
|
+
</script>
|
|
92
|
+
</body>
|
|
93
|
+
</html>
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>Decision Tree Visualizer (Offline)</title>
|
|
7
|
+
<style>
|
|
8
|
+
{{ css_content | safe }}
|
|
9
|
+
</style>
|
|
10
|
+
<script>{{ d3_content | safe }}</script>
|
|
11
|
+
</head>
|
|
12
|
+
<body>
|
|
13
|
+
<div id="header">
|
|
14
|
+
<h1>Decision Tree Visualization (Offline)</h1>
|
|
15
|
+
</div>
|
|
16
|
+
|
|
17
|
+
<!-- Main layout: vertical sidebar (logic groups) + content -->
|
|
18
|
+
<div id="main">
|
|
19
|
+
<!-- Vertical nav sidebar for logic groups -->
|
|
20
|
+
<aside id="logic-group-tabs" role="region" aria-label="Logic groups">
|
|
21
|
+
<button class="tab-button active" data-group="*">All</button>
|
|
22
|
+
<!-- Other tabs inserted by JS -->
|
|
23
|
+
</aside>
|
|
24
|
+
|
|
25
|
+
<!-- Content area: controls bar + tree -->
|
|
26
|
+
<div id="content">
|
|
27
|
+
<!-- Controls bar: left = highlight toggle, right = export/theme buttons -->
|
|
28
|
+
<div id="controls-bar">
|
|
29
|
+
<!-- highlight-control will be injected by JS if window.with_eval is true -->
|
|
30
|
+
<!-- export controls will be injected here by script.js -->
|
|
31
|
+
</div>
|
|
32
|
+
|
|
33
|
+
<!-- Tree Container (no native scrollbars; zoom/pan handles navigation) -->
|
|
34
|
+
<div id="tree-container"
|
|
35
|
+
data-initial-tree='{{ initial_tree_data | tojson | e }}'
|
|
36
|
+
data-tree-id="offline">
|
|
37
|
+
</div>
|
|
38
|
+
</div>
|
|
39
|
+
</div>
|
|
40
|
+
|
|
41
|
+
<div id="node-info" style="display: none;">
|
|
42
|
+
<div class="node-info-header">
|
|
43
|
+
<h3>Node Details</h3>
|
|
44
|
+
<button id="node-info-pin" title="Pin">📌</button>
|
|
45
|
+
</div>
|
|
46
|
+
<div class="node-info-body">
|
|
47
|
+
<table class="node-info-table">
|
|
48
|
+
<tbody>
|
|
49
|
+
<tr>
|
|
50
|
+
<td class="node-info-label">ID</td>
|
|
51
|
+
<td class="node-info-value" id="info-id"></td>
|
|
52
|
+
</tr>
|
|
53
|
+
<tr>
|
|
54
|
+
<td class="node-info-label">Name</td>
|
|
55
|
+
<td class="node-info-value" id="info-name"></td>
|
|
56
|
+
</tr>
|
|
57
|
+
<tr>
|
|
58
|
+
<td class="node-info-label">Repr</td>
|
|
59
|
+
<td class="node-info-value" id="info-repr"></td>
|
|
60
|
+
</tr>
|
|
61
|
+
<tr>
|
|
62
|
+
<td class="node-info-label">Type</td>
|
|
63
|
+
<td class="node-info-value" id="info-type"></td>
|
|
64
|
+
</tr>
|
|
65
|
+
<tr>
|
|
66
|
+
<td class="node-info-label">Labels</td>
|
|
67
|
+
<td class="node-info-value" id="info-labels"></td>
|
|
68
|
+
</tr>
|
|
69
|
+
<tr>
|
|
70
|
+
<td class="node-info-label">Autogen</td>
|
|
71
|
+
<td class="node-info-value" id="info-autogen"></td>
|
|
72
|
+
</tr>
|
|
73
|
+
<tr>
|
|
74
|
+
<td class="node-info-label">Expression</td>
|
|
75
|
+
<td class="node-info-value" id="info-expr"></td>
|
|
76
|
+
</tr>
|
|
77
|
+
</tbody>
|
|
78
|
+
</table>
|
|
79
|
+
</div>
|
|
80
|
+
</div>
|
|
81
|
+
|
|
82
|
+
<script>
|
|
83
|
+
window.with_eval = {{ 'true' if with_eval else 'false' }};
|
|
84
|
+
window.with_watch = false;
|
|
85
|
+
</script>
|
|
86
|
+
<script>
|
|
87
|
+
{{ js_content | safe }}
|
|
88
|
+
const container = d3.select("#tree-container");
|
|
89
|
+
const initialTreeData = JSON.parse(container.attr("data-initial-tree"));
|
|
90
|
+
const treeId = container.attr("data-tree-id");
|
|
91
|
+
visualizeTree(initialTreeData);
|
|
92
|
+
</script>
|
|
93
|
+
</body>
|
|
94
|
+
</html>
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: PyDecisionGraph
|
|
3
|
+
Version: 0.3.2.post1
|
|
4
|
+
Summary: A rule-based decision tree implementation for Python
|
|
5
|
+
Home-page: https://github.com/BolunHan/PyDecisionGraph
|
|
6
|
+
Author: Han Bolun
|
|
7
|
+
Author-email: Han Bolun <Bolun.Han@outlook.com>
|
|
8
|
+
License-Expression: MPL-2.0
|
|
9
|
+
Project-URL: Homepage, https://github.com/BolunHan/PyDecisionGraph
|
|
10
|
+
Project-URL: Repository, https://github.com/BolunHan/PyDecisionGraph
|
|
11
|
+
Project-URL: Issues, https://github.com/BolunHan/PyDecisionGraph/issues
|
|
12
|
+
Keywords: decision tree,decision graph,rules,cython,HFT
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Requires-Python: >=3.12
|
|
17
|
+
Description-Content-Type: text/markdown
|
|
18
|
+
License-File: LICENSE
|
|
19
|
+
Provides-Extra: visualization
|
|
20
|
+
Requires-Dist: flask; extra == "visualization"
|
|
21
|
+
Requires-Dist: jinja2; extra == "visualization"
|
|
22
|
+
Provides-Extra: session-time-support
|
|
23
|
+
Requires-Dist: PyAlgoEngine; extra == "session-time-support"
|
|
24
|
+
Dynamic: license-file
|
|
25
|
+
|
|
26
|
+
# PyDecisionGraph
|
|
27
|
+
|
|
28
|
+
`PyDecisionGraph` is an easy-to-use library to create custom decision trees, primarily designed for trading and financial decision-making. This package helps you build rule-based decision processes and visualize them effectively.
|
|
29
|
+
|
|
30
|
+
## Installation
|
|
31
|
+
|
|
32
|
+
To install the package, run:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
pip install PyDecisionGraph
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Cython headers
|
|
39
|
+
|
|
40
|
+
When Cython is installed in the same environment, the build links
|
|
41
|
+
`decision_graph` into `Cython/Includes` through `cbase.cython_injection`, so
|
|
42
|
+
downstream projects can `cimport decision_graph`.
|
|
43
|
+
|
|
44
|
+
# Requirements
|
|
45
|
+
|
|
46
|
+
- Python 3.12 or higher
|
|
47
|
+
|
|
48
|
+
# Documentation
|
|
49
|
+
|
|
50
|
+
For detailed documentation, visit https://pydecisiongraph.readthedocs.io/.
|
|
51
|
+
|
|
52
|
+
# Quick Start
|
|
53
|
+
|
|
54
|
+
Here is a quick demo on how to use `PyDecisionGraph` for building a decision tree based on various conditions:
|
|
55
|
+
|
|
56
|
+
```python
|
|
57
|
+
from decision_graph.decision_tree import LOGGER, LongAction, ShortAction, NoAction, RootLogicNode, LogicMapping
|
|
58
|
+
|
|
59
|
+
# Mapping of attribute names to their values
|
|
60
|
+
state = {
|
|
61
|
+
"exposure": 0, # Current exposure
|
|
62
|
+
"working_order": 0, # Current working order
|
|
63
|
+
"up_prob": 0.8, # Probability of price going up
|
|
64
|
+
"down_prob": 0.2, # Probability of price going down
|
|
65
|
+
"volatility": 0.26, # Current market volatility
|
|
66
|
+
"ttl": 15.3 # Time to live (TTL) of the decision tree
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
# The store the conditions read from, entered for the scope the tree is built in
|
|
70
|
+
with LogicMapping(name='Root', data=state) as lg:
|
|
71
|
+
# Root of the logic tree
|
|
72
|
+
with RootLogicNode() as root:
|
|
73
|
+
# Condition for zero exposure
|
|
74
|
+
with lg.exposure == 0:
|
|
75
|
+
with lg.volatility > 0.25: # Check if volatility is high
|
|
76
|
+
with lg.down_prob > 0.1: # Action for down probability
|
|
77
|
+
LongAction()
|
|
78
|
+
|
|
79
|
+
with lg.up_prob < -0.1: # Action for up probability
|
|
80
|
+
ShortAction()
|
|
81
|
+
|
|
82
|
+
# No action if there's a working order
|
|
83
|
+
with lg.working_order != 0:
|
|
84
|
+
NoAction()
|
|
85
|
+
|
|
86
|
+
# Visualize the decision tree
|
|
87
|
+
root.to_html('tree.html')
|
|
88
|
+
|
|
89
|
+
# Log the evaluation result
|
|
90
|
+
LOGGER.info(root())
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Explanation of the Script:
|
|
94
|
+
|
|
95
|
+
- LogicNode & LogicMapping:
|
|
96
|
+
- LogicNode: Represents a node in the decision tree where conditions are evaluated. A node evaluates its condition and takes one of its two arms.
|
|
97
|
+
- LogicMapping: The named store the conditions read from, holding the state used in decision-making. Feed it a new value and the next walk moves.
|
|
98
|
+
|
|
99
|
+
- State:
|
|
100
|
+
- A dictionary containing the variables used for decision-making, such as exposure, working_order, up_prob, etc.
|
|
101
|
+
|
|
102
|
+
- RootLogicNode:
|
|
103
|
+
- The entry point for the decision tree; its single child is the top of the tree.
|
|
104
|
+
|
|
105
|
+
- Decision Conditions:
|
|
106
|
+
- Inside each with block, logical conditions are evaluated (e.g., lg.volatility > 0.25, lg.up_prob < -0.1) to determine which action to take.
|
|
107
|
+
- Each with block nests one level deeper; the first block under a node is its true arm, the second its false arm.
|
|
108
|
+
- Actions like LongAction() or ShortAction() are taken based on the conditions.
|
|
109
|
+
|
|
110
|
+
- Action Handling:
|
|
111
|
+
- LongAction(), ShortAction(), and NoAction() represent different actions you can trigger in the decision tree based on the conditions.
|
|
112
|
+
- An arm left empty is filled with a NoAction when the tree is evaluated.
|
|
113
|
+
|
|
114
|
+
- Logging:
|
|
115
|
+
- The result of the tree evaluation is logged using the LOGGER object, which outputs to the console.
|
|
116
|
+
|
|
117
|
+
- Visualization:
|
|
118
|
+
- root.to_html('tree.html') generates a standalone HTML page visualizing the decision tree. Drop the file name and the page is named after the root.
|
|
119
|
+
|
|
120
|
+
# Features
|
|
121
|
+
|
|
122
|
+
- Easily define custom decision rules.
|
|
123
|
+
- Actionable outcomes like LongAction, ShortAction, and NoAction.
|
|
124
|
+
- Log outputs for debugging and tracking.
|
|
125
|
+
- Visualize decision paths through HTML export.
|
|
126
|
+
- Bake a finished tree once (root.bake()) and let it decide in a hot loop.
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
# Contributing
|
|
131
|
+
|
|
132
|
+
Feel free to fork, submit issues, and create pull requests. Contributions are always welcome!
|
|
133
|
+
|
|
134
|
+
# License
|
|
135
|
+
|
|
136
|
+
This project is licensed under the Mozilla Public License 2.0 - see the LICENSE file for details.
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
decision_graph/__infra__.pxd,sha256=nuqSh-w6cnYPnBvJJNIV_O6NUXCs1QMttSvFSLXFgZk,31
|
|
2
|
+
decision_graph/__init__.pxd,sha256=nuqSh-w6cnYPnBvJJNIV_O6NUXCs1QMttSvFSLXFgZk,31
|
|
3
|
+
decision_graph/__init__.py,sha256=z2TjbfSXjIt2sXI5XDxzhp_awaacBTN5atB4N2fBERc,1182
|
|
4
|
+
decision_graph/decision_tree/__init__.pxd,sha256=BRzN9sG6rx8Ks0emiTO5tOAkYFxxj_9jymrPGpwCjuM,42
|
|
5
|
+
decision_graph/decision_tree/__init__.py,sha256=iQSEOIkVbCeUEp40e5VLTdnH8uSo8-yPGYgkcnNZBkg,2595
|
|
6
|
+
decision_graph/decision_tree/exc.py,sha256=SyEpnN9tEG6YIrF9p2KNzfyTvg3xpia-I5Zz72-PxBM,6833
|
|
7
|
+
decision_graph/decision_tree/bake/__infra__.pxd,sha256=j3cQgO-G6H5TVMGpeUwdFwD4hDLBMmfkMI6JJrMxrXk,13186
|
|
8
|
+
decision_graph/decision_tree/bake/__init__.pxd,sha256=j3cQgO-G6H5TVMGpeUwdFwD4hDLBMmfkMI6JJrMxrXk,13186
|
|
9
|
+
decision_graph/decision_tree/bake/__init__.py,sha256=tTIvmQSm9Wdi97JC6_erDrXPNB4uMEr0HXKqvpLSvMM,572
|
|
10
|
+
decision_graph/decision_tree/bake/c_action.cp315-win_amd64.pyd,sha256=ABVRuScJ4KZ9UJOwBRf_sMKwwYqLtcaVYuNJn5eLyzc,122880
|
|
11
|
+
decision_graph/decision_tree/bake/c_action.h,sha256=LdpNCjCGShDcUHDRnmyDnI7IiHEv75isN5a8iiBedXA,15281
|
|
12
|
+
decision_graph/decision_tree/bake/c_action.pxd,sha256=Cf08gum87muycP6RglTreBLsQG4rgch3H4i_28TnBWU,1888
|
|
13
|
+
decision_graph/decision_tree/bake/c_action.pyi,sha256=OmIOUYhZr0NZqIRjxBgvUhJVoZ-yqhXlYs4NuHP1fcA,4142
|
|
14
|
+
decision_graph/decision_tree/bake/c_action.pyx,sha256=Y2Kj5hQDq3L9J8jWpu8YnYL7sytrZq7ZPUe5Jx94Ajg,2348
|
|
15
|
+
decision_graph/decision_tree/bake/c_allocator_protocol.cp315-win_amd64.pyd,sha256=2mE5un9gOWD9kGvM5aUYxuaSdSqKPV0Du3TMAImKMio,59904
|
|
16
|
+
decision_graph/decision_tree/bake/c_allocator_protocol.pxd,sha256=e48ZOAyP9ld1uhTB0J2983tzMpt_CFwYrtrgn30T-4g,657
|
|
17
|
+
decision_graph/decision_tree/bake/c_allocator_protocol.pyi,sha256=Jf0FOhBHHHDIzTTaPoZU6peng_hoYUmLItAX5Cyd5N8,2128
|
|
18
|
+
decision_graph/decision_tree/bake/c_allocator_protocol.pyx,sha256=SMUDfGPNZxqvGEMJ0-egjITbMuna6XhqxmnaH-f5UlU,4469
|
|
19
|
+
decision_graph/decision_tree/bake/c_bake.cp315-win_amd64.pyd,sha256=A82nG322geBCJYsQxae2jZPClK94Q-v5B52L4MOmIHE,107520
|
|
20
|
+
decision_graph/decision_tree/bake/c_bake.h,sha256=YAnvSYVtZrR8o6qc7YAyRK0xcylOA0KdXw6FojGTa70,29717
|
|
21
|
+
decision_graph/decision_tree/bake/c_bake.pxd,sha256=hKwMQAYjqoBshvexiXaIScBHZFU7AaZ1gkXTe4AI9uM,2005
|
|
22
|
+
decision_graph/decision_tree/bake/c_bake.pyi,sha256=dKxGV7LIlH-rOJgMjhyOekD1cK89x5eXgHzeEwXKrNs,6141
|
|
23
|
+
decision_graph/decision_tree/bake/c_bake.pyx,sha256=VtGp-UZKxh3yUsHcn85VSb4T7Ix8AR-TeYHr-NoJ2U4,5283
|
|
24
|
+
decision_graph/decision_tree/bake/c_collections.cp315-win_amd64.pyd,sha256=1fy4EUWxCCTqN29uRQqBQXwzMmVjbULvdJyAMzASSnQ,139264
|
|
25
|
+
decision_graph/decision_tree/bake/c_collections.h,sha256=1zdlpi6z_DC1RpRlUlMrJke2JBJxpypttLSLC0I4JFs,33578
|
|
26
|
+
decision_graph/decision_tree/bake/c_collections.pxd,sha256=ntSYdPtmCBGRBBD73Lfa2k4qfuFPLHLQRgoGIWnerE4,2923
|
|
27
|
+
decision_graph/decision_tree/bake/c_collections.pyi,sha256=Qcrjodv8kcFZiIUV_dYJk3JrHH7X--_u_x0AgPJW4AM,6941
|
|
28
|
+
decision_graph/decision_tree/bake/c_collections.pyx,sha256=IkE1GZ7QE6E-YDBTophcXlHqcz5l9-X5GkxhHGlMgjs,6949
|
|
29
|
+
decision_graph/decision_tree/bake/c_const.cp315-win_amd64.pyd,sha256=sqi9zhV-t-SOzIqlP7yvFO4RM1p4OZM6hcTycIbKOQ4,144384
|
|
30
|
+
decision_graph/decision_tree/bake/c_const.h,sha256=IotCLW9CcqFqsihFYgdP1J2k_HmydMRstL26QRRwu5w,16461
|
|
31
|
+
decision_graph/decision_tree/bake/c_const.pxd,sha256=2acz9sbX0GLD3CxgVYll1OHy7QkGaufJtDzA-7mDobI,2327
|
|
32
|
+
decision_graph/decision_tree/bake/c_const.pyi,sha256=Q99cQquBFMIXCHXWiMVAvs6gl_wl1Rln5BvCyuGn97c,12124
|
|
33
|
+
decision_graph/decision_tree/bake/c_const.pyx,sha256=KZtOZwtOiWRXWTo_xzZRkQWCMBBgrgN_3b-mDJZBZco,11433
|
|
34
|
+
decision_graph/decision_tree/bake/c_edge.cp315-win_amd64.pyd,sha256=dAUzNW4vqHvByL4Mvyag9etUXxcUOKa1k32qMbN_sh8,109056
|
|
35
|
+
decision_graph/decision_tree/bake/c_edge.h,sha256=KLqCbAoRFV-gLDcKhnZQzJpgGsi0e-hGQvqNZPg3lvg,20511
|
|
36
|
+
decision_graph/decision_tree/bake/c_edge.pxd,sha256=X9V6buFM4rw41rf8A2rGiS0_W37og3yMCOiU6oabEmQ,4579
|
|
37
|
+
decision_graph/decision_tree/bake/c_edge.pyi,sha256=wAC_tiaq7xvnOVwq0G-_IYPrE21iu8aXCK2JoGRo7v0,6043
|
|
38
|
+
decision_graph/decision_tree/bake/c_edge.pyx,sha256=ZU1c9UXdiy7wr2GZSAg6JWbHmL81e_1Q5b-llxiSleo,10667
|
|
39
|
+
decision_graph/decision_tree/bake/c_eval.h,sha256=DVZdoMkyO59iSR-2BbC25r5QXSd4I0gWbm1qkWKmtPU,39110
|
|
40
|
+
decision_graph/decision_tree/bake/c_eval.pxd,sha256=lmGxWb-ZYmG0eAXyOte-dWIRV9VByKdMFbenCJxJ-Z8,2129
|
|
41
|
+
decision_graph/decision_tree/bake/c_expr.cp315-win_amd64.pyd,sha256=5ebHplcR0KMGnPQlhtk6n6hsL_U1HWyYLmmmnaZhyCA,155136
|
|
42
|
+
decision_graph/decision_tree/bake/c_expr.h,sha256=_rMI26JU7dRDrOxede5FBTU8dhJZgQIvABzOo_mWFPw,85713
|
|
43
|
+
decision_graph/decision_tree/bake/c_expr.pxd,sha256=o6euzrTXKuu6xN24fJA7eLx4BJ7jg4bG_An9cDaRo5c,6961
|
|
44
|
+
decision_graph/decision_tree/bake/c_expr.pyi,sha256=tugTo0viMBj1s8RLEK9RyVI7f9YHEud9fUMrnYcSt78,9664
|
|
45
|
+
decision_graph/decision_tree/bake/c_expr.pyx,sha256=Bh5BfBQFxCBDZGOhJGfFC6O86ZOo-zttYUse8gVnr68,9851
|
|
46
|
+
decision_graph/decision_tree/bake/c_hierarchy.cp315-win_amd64.pyd,sha256=jPJDU9hvXU5aWWqAb3wG9cvrXk-_z0CuaUmewnDjBiY,174080
|
|
47
|
+
decision_graph/decision_tree/bake/c_hierarchy.h,sha256=dvwIJopa3W_r_AvI4GC0ekRXbfdgD0c8hXwNTW-0Gy8,34340
|
|
48
|
+
decision_graph/decision_tree/bake/c_hierarchy.pxd,sha256=x5UNfx_m3Q_tovncI63gqtX_tLl2nxmFpxGGm55Qv1s,2541
|
|
49
|
+
decision_graph/decision_tree/bake/c_hierarchy.pyi,sha256=VnoJRvEdEtoImpJBJDKSGpwL3OAzGw8ccWrDBH__-3o,16605
|
|
50
|
+
decision_graph/decision_tree/bake/c_hierarchy.pyx,sha256=zT3o8pmCkdwJn8Lhd1G3YBgd0hOP0hhyrW-RpUgVdxs,11244
|
|
51
|
+
decision_graph/decision_tree/bake/c_logic_group.cp315-win_amd64.pyd,sha256=IVSyze2Gc0wURqnTPj0CgqV6lwOBL0-5A98R8SwRRyw,168448
|
|
52
|
+
decision_graph/decision_tree/bake/c_logic_group.h,sha256=mlcvPwifTQV72sb8SRGg44Nae_DN0WVxYKRZLNPIsg0,52588
|
|
53
|
+
decision_graph/decision_tree/bake/c_logic_group.pxd,sha256=loY05i6HHwgYIK1Au77MY4UxQVGzB3FMbi_1xUVqXqw,6895
|
|
54
|
+
decision_graph/decision_tree/bake/c_logic_group.pyi,sha256=bZbFEfpEkZlIl9HEf5HTa8xlIxT_A9w9SJqKoWGowp0,7559
|
|
55
|
+
decision_graph/decision_tree/bake/c_logic_group.pyx,sha256=MCZY9TUd9ulbMxXmkZPtcMWDSpDLPW-ocEk1JfRrwrw,10900
|
|
56
|
+
decision_graph/decision_tree/bake/c_node.cp315-win_amd64.pyd,sha256=DklcshZg_lIp1AbV2NgrdZZFc2W0KTqxQBsGJfWp1AQ,201728
|
|
57
|
+
decision_graph/decision_tree/bake/c_node.h,sha256=IQyhEldp0RR8VIM6MXM4Eogyl7zTguVpBSSM0vSUl2M,111742
|
|
58
|
+
decision_graph/decision_tree/bake/c_node.pxd,sha256=UTm0afO_R1b7Dw7hCMSH-SAPRDTc-sk4yxJ0zqyhkgo,15699
|
|
59
|
+
decision_graph/decision_tree/bake/c_node.pyi,sha256=EzfKGg6TKEXZbJmRdF4IWsRz5bb1J1ve0IWlG0nbnmc,16613
|
|
60
|
+
decision_graph/decision_tree/bake/c_node.pyx,sha256=tKomRRWQ4ZBGMNTko_MzH7v88i5ataYwqjg7kfsRW6U,28546
|
|
61
|
+
decision_graph/decision_tree/bake/c_reconstruct.cp315-win_amd64.pyd,sha256=ByAcPORG916xmZAVWLxv9I21kWH10Z6yVEKbXzf0A-8,81920
|
|
62
|
+
decision_graph/decision_tree/bake/c_reconstruct.pxd,sha256=SC71o4payBg-u_J5wU_Jb2AGW-5Hi6fIEQWNpcKHIkA,2502
|
|
63
|
+
decision_graph/decision_tree/bake/c_reconstruct.pyi,sha256=gl_BJfDZyphfxnUHQdXdR3qxBKE7OyGEr7-orrb6-Co,2393
|
|
64
|
+
decision_graph/decision_tree/bake/c_reconstruct.pyx,sha256=vKSJM1CABTMI5_ThDZ5oaPzG-oY4zA_yQU-nO6JY26I,10711
|
|
65
|
+
decision_graph/decision_tree/bake/c_var.cp315-win_amd64.pyd,sha256=LGVtC_-YqI1k5FMZLVmc6YgJFfe7lscBdxfnieFYlR4,90112
|
|
66
|
+
decision_graph/decision_tree/bake/c_var.h,sha256=kBx0zgY0ejwRzJIfZDrHyUhlc8KU-qE265aIHzdjTxE,86095
|
|
67
|
+
decision_graph/decision_tree/bake/c_var.pxd,sha256=9T1RH_bBcfRub2r5Hh8213HFyycKDs7aIS25ksp6uMs,9012
|
|
68
|
+
decision_graph/decision_tree/bake/c_var.pyi,sha256=aGUIWIwXqCS6NGsSGsWfG6KsmjQDfRE0z5aO36-eVag,10262
|
|
69
|
+
decision_graph/decision_tree/bake/c_var.pyx,sha256=tFcE_xROEeMbifg4ry7CNGye0juWz-NsBjtVo-xdFIM,8543
|
|
70
|
+
decision_graph/decision_tree/capi/__infra__.pxd,sha256=ylj5Tqs1Oum30EgzuPGogSBvLbGfDRUH3nIAYWvtDVY,1889
|
|
71
|
+
decision_graph/decision_tree/capi/__init__.pxd,sha256=ylj5Tqs1Oum30EgzuPGogSBvLbGfDRUH3nIAYWvtDVY,1889
|
|
72
|
+
decision_graph/decision_tree/capi/__init__.py,sha256=RAoY3xFDWC059DeBObUWlPAZ5EhPOSbCBGzQ-9KyQ5g,1937
|
|
73
|
+
decision_graph/decision_tree/capi/c_abc.cp315-win_amd64.pyd,sha256=8Jp18qKNrjw9x7Mc0lAz8lh2T9e85uhHIHxF2dXsilw,327168
|
|
74
|
+
decision_graph/decision_tree/capi/c_abc.pxd,sha256=RkQvclJQkhn5e0ftaXpaLVLrjWYPQaj2PyjQIer2EEY,5773
|
|
75
|
+
decision_graph/decision_tree/capi/c_abc.pyi,sha256=ErmNyZZMTde8LYVAMAzPS9roUzTa0iYiNPlWWGwB5JQ,30600
|
|
76
|
+
decision_graph/decision_tree/capi/c_abc.pyx,sha256=ZlxhBzVeIL0fm67ejayVmz7bRehqjte-h8Uk3noKC-s,57061
|
|
77
|
+
decision_graph/decision_tree/capi/c_collection.cp315-win_amd64.pyd,sha256=BQ6HORIFDsCFOBH4Z_yjtk-oYdUDRogI7rKUKy7xIyA,101888
|
|
78
|
+
decision_graph/decision_tree/capi/c_collection.pxd,sha256=85_fAW3D3rmunsDjkEdvmzwSOHUgRFUahh5_jBCUhyw,440
|
|
79
|
+
decision_graph/decision_tree/capi/c_collection.pyi,sha256=M3ajlYFtWrxZCE7RIiUxe7wxpShDa90eBBtpb9nQDmU,8864
|
|
80
|
+
decision_graph/decision_tree/capi/c_collection.pyx,sha256=DOZ-f-6-bKBwZ5NUezqHNrnMeKKF0xLCya5qF6jQkGY,4235
|
|
81
|
+
decision_graph/decision_tree/capi/c_node.cp315-win_amd64.pyd,sha256=UIqKlUIAqhz30kh_2wjL9n-ci4zw6EOg6wZnqPq5mPE,220160
|
|
82
|
+
decision_graph/decision_tree/capi/c_node.pxd,sha256=QgJ7bd8t40Oy-GLTPKxNsUqYBJAHYPZWoeRSc0rWfvk,2256
|
|
83
|
+
decision_graph/decision_tree/capi/c_node.pyi,sha256=46oC-K1rWkrBsNiyhSfuTzv0S3SUTmv5j2hrURpm8Ao,17068
|
|
84
|
+
decision_graph/decision_tree/capi/c_node.pyx,sha256=XXlzs8zRpI5T-Yz47FunGPo4HE6mIYYuNdnEdIXLKFM,22927
|
|
85
|
+
decision_graph/decision_tree/native/__init__.py,sha256=Uherl6ZPrDxsHL508Kvo_rVqkR0NGMKTB9qcQmgDq6s,1931
|
|
86
|
+
decision_graph/decision_tree/native/abc.py,sha256=AUe68OwSn-A5n1x4Wa5ckNaAO8jzvuFxttnH-5ikvUM,41483
|
|
87
|
+
decision_graph/decision_tree/native/collection.py,sha256=HViJphVewFDx37A8VhlS0e4XCKQsnkpwmnd7fgl4GEY,4398
|
|
88
|
+
decision_graph/decision_tree/native/node.py,sha256=1D9TEN7xy8nl6Thlu4MlSbjjjTZ6pp92MMTmyuQQ8CQ,20083
|
|
89
|
+
decision_graph/includes/decision_graph/decision_tree/bake/c_action.c,sha256=rHkpQfZAbjBMizbFY9v-HMF2aNgEX_gjL-u5PUqq_2o,777154
|
|
90
|
+
decision_graph/includes/decision_graph/decision_tree/bake/c_action.h,sha256=LdpNCjCGShDcUHDRnmyDnI7IiHEv75isN5a8iiBedXA,15281
|
|
91
|
+
decision_graph/includes/decision_graph/decision_tree/bake/c_allocator_protocol.c,sha256=o2zD_td5u1oUluxINGqjtgeqBTDojbDC1KMalPkpd-I,557965
|
|
92
|
+
decision_graph/includes/decision_graph/decision_tree/bake/c_bake.c,sha256=4f44oVIrqAwX6or1WhRQV2xExm0X1Fhy_c_6O0cWko0,749431
|
|
93
|
+
decision_graph/includes/decision_graph/decision_tree/bake/c_bake.h,sha256=YAnvSYVtZrR8o6qc7YAyRK0xcylOA0KdXw6FojGTa70,29717
|
|
94
|
+
decision_graph/includes/decision_graph/decision_tree/bake/c_collections.c,sha256=hdpOeKU65hlrtMID-AXp3tm9R4ul0uY6VchiM0zDa3Y,818908
|
|
95
|
+
decision_graph/includes/decision_graph/decision_tree/bake/c_collections.h,sha256=1zdlpi6z_DC1RpRlUlMrJke2JBJxpypttLSLC0I4JFs,33578
|
|
96
|
+
decision_graph/includes/decision_graph/decision_tree/bake/c_const.c,sha256=bK0jdGfRb89jgaW63k6klovRWTx8s_q9twYQ4dE7UZI,970875
|
|
97
|
+
decision_graph/includes/decision_graph/decision_tree/bake/c_const.h,sha256=IotCLW9CcqFqsihFYgdP1J2k_HmydMRstL26QRRwu5w,16461
|
|
98
|
+
decision_graph/includes/decision_graph/decision_tree/bake/c_edge.c,sha256=D03P_uu5SfhonzgErLF-nZ-AMWVw1y1acBu8kVR8qpE,977007
|
|
99
|
+
decision_graph/includes/decision_graph/decision_tree/bake/c_edge.h,sha256=KLqCbAoRFV-gLDcKhnZQzJpgGsi0e-hGQvqNZPg3lvg,20511
|
|
100
|
+
decision_graph/includes/decision_graph/decision_tree/bake/c_eval.h,sha256=DVZdoMkyO59iSR-2BbC25r5QXSd4I0gWbm1qkWKmtPU,39110
|
|
101
|
+
decision_graph/includes/decision_graph/decision_tree/bake/c_expr.c,sha256=6krRztTSxMfwOqrMVVQfT-KxbD_JreKf7PNT_dRpf3k,1042148
|
|
102
|
+
decision_graph/includes/decision_graph/decision_tree/bake/c_expr.h,sha256=_rMI26JU7dRDrOxede5FBTU8dhJZgQIvABzOo_mWFPw,85713
|
|
103
|
+
decision_graph/includes/decision_graph/decision_tree/bake/c_hierarchy.c,sha256=nmTcRa3SYlHbN9of3grRd1PG0o1gkbRQtyLmwPZ1rFc,1071470
|
|
104
|
+
decision_graph/includes/decision_graph/decision_tree/bake/c_hierarchy.h,sha256=dvwIJopa3W_r_AvI4GC0ekRXbfdgD0c8hXwNTW-0Gy8,34340
|
|
105
|
+
decision_graph/includes/decision_graph/decision_tree/bake/c_logic_group.c,sha256=PBzz3FiKnTiBILtjG0xEJGP9rRsa5ZKQ8FsH9yNsa8c,1067248
|
|
106
|
+
decision_graph/includes/decision_graph/decision_tree/bake/c_logic_group.h,sha256=mlcvPwifTQV72sb8SRGg44Nae_DN0WVxYKRZLNPIsg0,52588
|
|
107
|
+
decision_graph/includes/decision_graph/decision_tree/bake/c_node.c,sha256=uJTaVEEYeO8zibHrNOLUcOLLTEdWeY5aSplRX0FXBW0,1318369
|
|
108
|
+
decision_graph/includes/decision_graph/decision_tree/bake/c_node.h,sha256=IQyhEldp0RR8VIM6MXM4Eogyl7zTguVpBSSM0vSUl2M,111742
|
|
109
|
+
decision_graph/includes/decision_graph/decision_tree/bake/c_reconstruct.c,sha256=RV_YACNOAd6QAJrbQAf_1_qaKKM7CT_uGJ6UQT2XgG4,774564
|
|
110
|
+
decision_graph/includes/decision_graph/decision_tree/bake/c_var.c,sha256=Bp8SrwQOluioWa_rzYlfOoAYMPzWOTGscKbQtnFqkdU,721487
|
|
111
|
+
decision_graph/includes/decision_graph/decision_tree/bake/c_var.h,sha256=kBx0zgY0ejwRzJIfZDrHyUhlc8KU-qE265aIHzdjTxE,86095
|
|
112
|
+
decision_graph/includes/decision_graph/decision_tree/capi/c_abc.c,sha256=cGA6_aO1cJjccgFINcuNg5axEF8ibxYZYHj15DHS208,2754080
|
|
113
|
+
decision_graph/includes/decision_graph/decision_tree/capi/c_collection.c,sha256=ydqSBqO2rSTpXNB_SBM42x22yFZKfL3kuLw4rdSjeug,904937
|
|
114
|
+
decision_graph/includes/decision_graph/decision_tree/capi/c_node.c,sha256=7-P7MpqbKllliroanUyOy33n_yF8Dqrt2qdx486EeGg,1857496
|
|
115
|
+
decision_graph/logic_group/__init__.py,sha256=_umDw5O-BDJn6TSQUMZCyp74mm8sno3NTqL7JcC9Ot0,560
|
|
116
|
+
decision_graph/logic_group/base.py,sha256=Qp6AD5WSjS-ppKg-lbRtFc8tDkOKT9-t9He4Btm5F6Y,2637
|
|
117
|
+
decision_graph/logic_group/pending_request.py,sha256=qa0P5FkD3F9bVRbpX2njuLTr4l8aCQ3RfO6AhPaSpxU,11774
|
|
118
|
+
decision_graph/webui/__init__.py,sha256=M6yLhEtOVods2WgxYD-SI1_DmFjMyujcOYLZEOIgB7w,1041
|
|
119
|
+
decision_graph/webui/bake/__init__.py,sha256=pemSxHm6zC7C3HPnp5nouNV3UOg54JnHEDUV_QZuDAE,1936
|
|
120
|
+
decision_graph/webui/bake/app.py,sha256=KprkY9cx3mF6OJK1NiZpsccPX-s9dL9kE_Z2CXNlV5k,20924
|
|
121
|
+
decision_graph/webui/bake/static/d3.v7.min.js,sha256=i1bgTzZYOUnLCDLFy4Y3ha0m1rnURAaPBpdk6hVPN5o,279708
|
|
122
|
+
decision_graph/webui/bake/static/script.js,sha256=dsTsEuDv1_gMWVI53MSw8KCs7IkdTUWpC3j-XIda9js,61646
|
|
123
|
+
decision_graph/webui/bake/static/style.css,sha256=-tEVl6snwSuNChdBltIvzYEvGzWc_o7i5sHyijQ0ERg,19665
|
|
124
|
+
decision_graph/webui/bake/templates/index.html,sha256=EKCZvNaNufDs4VIFe4qv70lOuqaW15_xaITbxtCanvI,8876
|
|
125
|
+
decision_graph/webui/bake/templates/offline.html,sha256=D1wK_j90FzTuF4e-AIouTSUD9uR0Ogb1mQEVQexmfT4,8734
|
|
126
|
+
decision_graph/webui/capi/__init__.py,sha256=ejV00EXhBjuLiE8Od5xLlh0tay-RnL16rku306ZlJNE,1421
|
|
127
|
+
decision_graph/webui/capi/app.py,sha256=6BL2DvEOJYttcHcNH8UxseN1CD2TtA9RstdaqcnkNF0,15223
|
|
128
|
+
decision_graph/webui/capi/main.py,sha256=JsknSw1xEhP7im5kN3VGTwi-AerSxhpC_dkKuNUi6jc,2416
|
|
129
|
+
decision_graph/webui/capi/static/d3.v7.min.js,sha256=i1bgTzZYOUnLCDLFy4Y3ha0m1rnURAaPBpdk6hVPN5o,279708
|
|
130
|
+
decision_graph/webui/capi/static/script.js,sha256=m9h4uNUb5wygC11KPqvvyQKCyZlW5gFDjgxqpO0QbNM,39196
|
|
131
|
+
decision_graph/webui/capi/static/style.css,sha256=YF2giEHSo32-cR50cwImLIYE3XJXUir7h_2LOedm2x4,17588
|
|
132
|
+
decision_graph/webui/capi/templates/index.html,sha256=LRNTyvk5EdxJMq6YnAc9eqOsYr2atYlUHOkbA7V7SZ8,3398
|
|
133
|
+
decision_graph/webui/capi/templates/offline.html,sha256=Pf-Eh_qXf6QF07sDRu3gzKS0CB7Hg_qZrz2oEuLVbE8,3256
|
|
134
|
+
decision_graph/webui/native/__init__.py,sha256=9-nTE_F0abtr7oJAGzBGwBLCkhieOQqVvNa21GyW8R0,1439
|
|
135
|
+
decision_graph/webui/native/app.py,sha256=qKK5UuViBdzF5A6SewfLZETDvmuTS1SQOlKB66n6MBk,15231
|
|
136
|
+
decision_graph/webui/native/main.py,sha256=tjr4K32Wjtq3HjgK8a3paROBZFI-LdTjfj2rRtTjq90,2418
|
|
137
|
+
decision_graph/webui/native/static/d3.v7.min.js,sha256=i1bgTzZYOUnLCDLFy4Y3ha0m1rnURAaPBpdk6hVPN5o,279708
|
|
138
|
+
decision_graph/webui/native/static/script.js,sha256=m9h4uNUb5wygC11KPqvvyQKCyZlW5gFDjgxqpO0QbNM,39196
|
|
139
|
+
decision_graph/webui/native/static/style.css,sha256=YF2giEHSo32-cR50cwImLIYE3XJXUir7h_2LOedm2x4,17588
|
|
140
|
+
decision_graph/webui/native/templates/index.html,sha256=LRNTyvk5EdxJMq6YnAc9eqOsYr2atYlUHOkbA7V7SZ8,3398
|
|
141
|
+
decision_graph/webui/native/templates/offline.html,sha256=Pf-Eh_qXf6QF07sDRu3gzKS0CB7Hg_qZrz2oEuLVbE8,3256
|
|
142
|
+
pydecisiongraph-0.3.2.post1.dist-info/licenses/LICENSE,sha256=JoTeFzAOCkNGhvHsf4r2BFIHpLRXo_4EsrnOZV58XVA,17098
|
|
143
|
+
tests/bake_c_evaluator.cp315-win_amd64.pyd,sha256=k_js660wLBYVE_PvyQoYC3Vw27r8YD9uMGQFugcXsuo,100864
|
|
144
|
+
tests/bake_eval_probe.cp315-win_amd64.pyd,sha256=ATTr8z1AzaWp0aaPy8TYw-jv-FgSPOfIl5P-_PQrdQQ,86528
|
|
145
|
+
pydecisiongraph-0.3.2.post1.dist-info/METADATA,sha256=2dkWpRc7o0Glw197zSL_mQNSkU9A1LULDsrKwNc3ZEA,5226
|
|
146
|
+
pydecisiongraph-0.3.2.post1.dist-info/WHEEL,sha256=geuJoH1aW6kS7q0cKuoOBUdE-tpBsTvRf9l5rOGbxQs,101
|
|
147
|
+
pydecisiongraph-0.3.2.post1.dist-info/top_level.txt,sha256=OdgK81ktIqJXV4JFIUytM6u7Nxly8W1esFoAKQIk_wg,21
|
|
148
|
+
pydecisiongraph-0.3.2.post1.dist-info/RECORD,,
|