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.
Files changed (148) hide show
  1. decision_graph/__infra__.pxd +1 -0
  2. decision_graph/__init__.pxd +1 -0
  3. decision_graph/__init__.py +39 -0
  4. decision_graph/decision_tree/__init__.pxd +2 -0
  5. decision_graph/decision_tree/__init__.py +85 -0
  6. decision_graph/decision_tree/bake/__infra__.pxd +502 -0
  7. decision_graph/decision_tree/bake/__init__.pxd +502 -0
  8. decision_graph/decision_tree/bake/__init__.py +29 -0
  9. decision_graph/decision_tree/bake/c_action.cp315-win_amd64.pyd +0 -0
  10. decision_graph/decision_tree/bake/c_action.h +324 -0
  11. decision_graph/decision_tree/bake/c_action.pxd +54 -0
  12. decision_graph/decision_tree/bake/c_action.pyi +126 -0
  13. decision_graph/decision_tree/bake/c_action.pyx +65 -0
  14. decision_graph/decision_tree/bake/c_allocator_protocol.cp315-win_amd64.pyd +0 -0
  15. decision_graph/decision_tree/bake/c_allocator_protocol.pxd +24 -0
  16. decision_graph/decision_tree/bake/c_allocator_protocol.pyi +61 -0
  17. decision_graph/decision_tree/bake/c_allocator_protocol.pyx +109 -0
  18. decision_graph/decision_tree/bake/c_bake.cp315-win_amd64.pyd +0 -0
  19. decision_graph/decision_tree/bake/c_bake.h +629 -0
  20. decision_graph/decision_tree/bake/c_bake.pxd +52 -0
  21. decision_graph/decision_tree/bake/c_bake.pyi +151 -0
  22. decision_graph/decision_tree/bake/c_bake.pyx +142 -0
  23. decision_graph/decision_tree/bake/c_collections.cp315-win_amd64.pyd +0 -0
  24. decision_graph/decision_tree/bake/c_collections.h +692 -0
  25. decision_graph/decision_tree/bake/c_collections.pxd +52 -0
  26. decision_graph/decision_tree/bake/c_collections.pyi +193 -0
  27. decision_graph/decision_tree/bake/c_collections.pyx +161 -0
  28. decision_graph/decision_tree/bake/c_const.cp315-win_amd64.pyd +0 -0
  29. decision_graph/decision_tree/bake/c_const.h +395 -0
  30. decision_graph/decision_tree/bake/c_const.pxd +56 -0
  31. decision_graph/decision_tree/bake/c_const.pyi +305 -0
  32. decision_graph/decision_tree/bake/c_const.pyx +278 -0
  33. decision_graph/decision_tree/bake/c_edge.cp315-win_amd64.pyd +0 -0
  34. decision_graph/decision_tree/bake/c_edge.h +511 -0
  35. decision_graph/decision_tree/bake/c_edge.pxd +117 -0
  36. decision_graph/decision_tree/bake/c_edge.pyi +192 -0
  37. decision_graph/decision_tree/bake/c_edge.pyx +270 -0
  38. decision_graph/decision_tree/bake/c_eval.h +848 -0
  39. decision_graph/decision_tree/bake/c_eval.pxd +40 -0
  40. decision_graph/decision_tree/bake/c_expr.cp315-win_amd64.pyd +0 -0
  41. decision_graph/decision_tree/bake/c_expr.h +1900 -0
  42. decision_graph/decision_tree/bake/c_expr.pxd +129 -0
  43. decision_graph/decision_tree/bake/c_expr.pyi +280 -0
  44. decision_graph/decision_tree/bake/c_expr.pyx +272 -0
  45. decision_graph/decision_tree/bake/c_hierarchy.cp315-win_amd64.pyd +0 -0
  46. decision_graph/decision_tree/bake/c_hierarchy.h +731 -0
  47. decision_graph/decision_tree/bake/c_hierarchy.pxd +71 -0
  48. decision_graph/decision_tree/bake/c_hierarchy.pyi +409 -0
  49. decision_graph/decision_tree/bake/c_hierarchy.pyx +277 -0
  50. decision_graph/decision_tree/bake/c_logic_group.cp315-win_amd64.pyd +0 -0
  51. decision_graph/decision_tree/bake/c_logic_group.h +1226 -0
  52. decision_graph/decision_tree/bake/c_logic_group.pxd +162 -0
  53. decision_graph/decision_tree/bake/c_logic_group.pyi +264 -0
  54. decision_graph/decision_tree/bake/c_logic_group.pyx +308 -0
  55. decision_graph/decision_tree/bake/c_node.cp315-win_amd64.pyd +0 -0
  56. decision_graph/decision_tree/bake/c_node.h +2660 -0
  57. decision_graph/decision_tree/bake/c_node.pxd +381 -0
  58. decision_graph/decision_tree/bake/c_node.pyi +438 -0
  59. decision_graph/decision_tree/bake/c_node.pyx +639 -0
  60. decision_graph/decision_tree/bake/c_reconstruct.cp315-win_amd64.pyd +0 -0
  61. decision_graph/decision_tree/bake/c_reconstruct.pxd +63 -0
  62. decision_graph/decision_tree/bake/c_reconstruct.pyi +60 -0
  63. decision_graph/decision_tree/bake/c_reconstruct.pyx +252 -0
  64. decision_graph/decision_tree/bake/c_var.cp315-win_amd64.pyd +0 -0
  65. decision_graph/decision_tree/bake/c_var.h +2054 -0
  66. decision_graph/decision_tree/bake/c_var.pxd +205 -0
  67. decision_graph/decision_tree/bake/c_var.pyi +271 -0
  68. decision_graph/decision_tree/bake/c_var.pyx +228 -0
  69. decision_graph/decision_tree/capi/__infra__.pxd +33 -0
  70. decision_graph/decision_tree/capi/__init__.pxd +33 -0
  71. decision_graph/decision_tree/capi/__init__.py +57 -0
  72. decision_graph/decision_tree/capi/c_abc.cp315-win_amd64.pyd +0 -0
  73. decision_graph/decision_tree/capi/c_abc.pxd +246 -0
  74. decision_graph/decision_tree/capi/c_abc.pyi +770 -0
  75. decision_graph/decision_tree/capi/c_abc.pyx +1532 -0
  76. decision_graph/decision_tree/capi/c_collection.cp315-win_amd64.pyd +0 -0
  77. decision_graph/decision_tree/capi/c_collection.pxd +22 -0
  78. decision_graph/decision_tree/capi/c_collection.pyi +245 -0
  79. decision_graph/decision_tree/capi/c_collection.pyx +138 -0
  80. decision_graph/decision_tree/capi/c_node.cp315-win_amd64.pyd +0 -0
  81. decision_graph/decision_tree/capi/c_node.pxd +95 -0
  82. decision_graph/decision_tree/capi/c_node.pyi +492 -0
  83. decision_graph/decision_tree/capi/c_node.pyx +551 -0
  84. decision_graph/decision_tree/exc.py +189 -0
  85. decision_graph/decision_tree/native/__init__.py +57 -0
  86. decision_graph/decision_tree/native/abc.py +1167 -0
  87. decision_graph/decision_tree/native/collection.py +134 -0
  88. decision_graph/decision_tree/native/node.py +521 -0
  89. decision_graph/includes/decision_graph/decision_tree/bake/c_action.c +16320 -0
  90. decision_graph/includes/decision_graph/decision_tree/bake/c_action.h +324 -0
  91. decision_graph/includes/decision_graph/decision_tree/bake/c_allocator_protocol.c +12473 -0
  92. decision_graph/includes/decision_graph/decision_tree/bake/c_bake.c +16485 -0
  93. decision_graph/includes/decision_graph/decision_tree/bake/c_bake.h +629 -0
  94. decision_graph/includes/decision_graph/decision_tree/bake/c_collections.c +17381 -0
  95. decision_graph/includes/decision_graph/decision_tree/bake/c_collections.h +692 -0
  96. decision_graph/includes/decision_graph/decision_tree/bake/c_const.c +20815 -0
  97. decision_graph/includes/decision_graph/decision_tree/bake/c_const.h +395 -0
  98. decision_graph/includes/decision_graph/decision_tree/bake/c_edge.c +20696 -0
  99. decision_graph/includes/decision_graph/decision_tree/bake/c_edge.h +511 -0
  100. decision_graph/includes/decision_graph/decision_tree/bake/c_eval.h +848 -0
  101. decision_graph/includes/decision_graph/decision_tree/bake/c_expr.c +22065 -0
  102. decision_graph/includes/decision_graph/decision_tree/bake/c_expr.h +1900 -0
  103. decision_graph/includes/decision_graph/decision_tree/bake/c_hierarchy.c +23267 -0
  104. decision_graph/includes/decision_graph/decision_tree/bake/c_hierarchy.h +731 -0
  105. decision_graph/includes/decision_graph/decision_tree/bake/c_logic_group.c +22434 -0
  106. decision_graph/includes/decision_graph/decision_tree/bake/c_logic_group.h +1226 -0
  107. decision_graph/includes/decision_graph/decision_tree/bake/c_node.c +28385 -0
  108. decision_graph/includes/decision_graph/decision_tree/bake/c_node.h +2660 -0
  109. decision_graph/includes/decision_graph/decision_tree/bake/c_reconstruct.c +15955 -0
  110. decision_graph/includes/decision_graph/decision_tree/bake/c_var.c +16881 -0
  111. decision_graph/includes/decision_graph/decision_tree/bake/c_var.h +2054 -0
  112. decision_graph/includes/decision_graph/decision_tree/capi/c_abc.c +59196 -0
  113. decision_graph/includes/decision_graph/decision_tree/capi/c_collection.c +19967 -0
  114. decision_graph/includes/decision_graph/decision_tree/capi/c_node.c +39229 -0
  115. decision_graph/logic_group/__init__.py +25 -0
  116. decision_graph/logic_group/base.py +100 -0
  117. decision_graph/logic_group/pending_request.py +384 -0
  118. decision_graph/webui/__init__.py +24 -0
  119. decision_graph/webui/bake/__init__.py +65 -0
  120. decision_graph/webui/bake/app.py +488 -0
  121. decision_graph/webui/bake/static/d3.v7.min.js +2 -0
  122. decision_graph/webui/bake/static/script.js +1440 -0
  123. decision_graph/webui/bake/static/style.css +920 -0
  124. decision_graph/webui/bake/templates/index.html +183 -0
  125. decision_graph/webui/bake/templates/offline.html +184 -0
  126. decision_graph/webui/capi/__init__.py +54 -0
  127. decision_graph/webui/capi/app.py +366 -0
  128. decision_graph/webui/capi/main.py +53 -0
  129. decision_graph/webui/capi/static/d3.v7.min.js +2 -0
  130. decision_graph/webui/capi/static/script.js +1026 -0
  131. decision_graph/webui/capi/static/style.css +656 -0
  132. decision_graph/webui/capi/templates/index.html +93 -0
  133. decision_graph/webui/capi/templates/offline.html +94 -0
  134. decision_graph/webui/native/__init__.py +54 -0
  135. decision_graph/webui/native/app.py +366 -0
  136. decision_graph/webui/native/main.py +53 -0
  137. decision_graph/webui/native/static/d3.v7.min.js +2 -0
  138. decision_graph/webui/native/static/script.js +1026 -0
  139. decision_graph/webui/native/static/style.css +656 -0
  140. decision_graph/webui/native/templates/index.html +93 -0
  141. decision_graph/webui/native/templates/offline.html +94 -0
  142. pydecisiongraph-0.3.2.post1.dist-info/METADATA +136 -0
  143. pydecisiongraph-0.3.2.post1.dist-info/RECORD +148 -0
  144. pydecisiongraph-0.3.2.post1.dist-info/WHEEL +5 -0
  145. pydecisiongraph-0.3.2.post1.dist-info/licenses/LICENSE +373 -0
  146. pydecisiongraph-0.3.2.post1.dist-info/top_level.txt +2 -0
  147. tests/bake_c_evaluator.cp315-win_amd64.pyd +0 -0
  148. 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">&#128204;</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">&#128204;</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,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (84.0.0)
3
+ Root-Is-Purelib: false
4
+ Tag: cp315-cp315-win_amd64
5
+