ivoryos 1.2.1__py3-none-any.whl → 1.2.3__py3-none-any.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.

Potentially problematic release.


This version of ivoryos might be problematic. Click here for more details.

Files changed (75) hide show
  1. ivoryos/optimizer/ax_optimizer.py +164 -0
  2. ivoryos/optimizer/base_optimizer.py +65 -0
  3. ivoryos/optimizer/baybe_optimizer.py +183 -0
  4. ivoryos/optimizer/registry.py +9 -0
  5. ivoryos/routes/api/api.py +56 -0
  6. ivoryos/routes/auth/templates/login.html +25 -0
  7. ivoryos/routes/auth/templates/signup.html +32 -0
  8. ivoryos/routes/control/templates/controllers.html +166 -0
  9. ivoryos/routes/control/templates/controllers_new.html +112 -0
  10. ivoryos/routes/data/templates/components/step_card.html +13 -0
  11. ivoryos/routes/data/templates/workflow_database.html +109 -0
  12. ivoryos/routes/data/templates/workflow_view.html +130 -0
  13. ivoryos/routes/design/templates/components/action_form.html +53 -0
  14. ivoryos/routes/design/templates/components/actions_panel.html +25 -0
  15. ivoryos/routes/design/templates/components/autofill_toggle.html +10 -0
  16. ivoryos/routes/design/templates/components/canvas.html +5 -0
  17. ivoryos/routes/design/templates/components/canvas_footer.html +9 -0
  18. ivoryos/routes/design/templates/components/canvas_header.html +75 -0
  19. ivoryos/routes/design/templates/components/canvas_main.html +34 -0
  20. ivoryos/routes/design/templates/components/deck_selector.html +10 -0
  21. ivoryos/routes/design/templates/components/edit_action_form.html +38 -0
  22. ivoryos/routes/design/templates/components/instruments_panel.html +66 -0
  23. ivoryos/routes/design/templates/components/modals/drop_modal.html +17 -0
  24. ivoryos/routes/design/templates/components/modals/json_modal.html +22 -0
  25. ivoryos/routes/design/templates/components/modals/new_script_modal.html +17 -0
  26. ivoryos/routes/design/templates/components/modals/rename_modal.html +23 -0
  27. ivoryos/routes/design/templates/components/modals/saveas_modal.html +27 -0
  28. ivoryos/routes/design/templates/components/modals.html +6 -0
  29. ivoryos/routes/design/templates/components/python_code_overlay.html +39 -0
  30. ivoryos/routes/design/templates/components/sidebar.html +15 -0
  31. ivoryos/routes/design/templates/components/text_to_code_panel.html +20 -0
  32. ivoryos/routes/design/templates/experiment_builder.html +41 -0
  33. ivoryos/routes/execute/templates/components/error_modal.html +20 -0
  34. ivoryos/routes/execute/templates/components/logging_panel.html +31 -0
  35. ivoryos/routes/execute/templates/components/progress_panel.html +27 -0
  36. ivoryos/routes/execute/templates/components/run_panel.html +9 -0
  37. ivoryos/routes/execute/templates/components/run_tabs.html +17 -0
  38. ivoryos/routes/execute/templates/components/tab_bayesian.html +398 -0
  39. ivoryos/routes/execute/templates/components/tab_configuration.html +98 -0
  40. ivoryos/routes/execute/templates/components/tab_repeat.html +14 -0
  41. ivoryos/routes/execute/templates/experiment_run.html +294 -0
  42. ivoryos/routes/library/templates/library.html +92 -0
  43. ivoryos/routes/main/templates/help.html +141 -0
  44. ivoryos/routes/main/templates/home.html +103 -0
  45. ivoryos/static/favicon.ico +0 -0
  46. ivoryos/static/gui_annotation/Slide1.png +0 -0
  47. ivoryos/static/gui_annotation/Slide2.PNG +0 -0
  48. ivoryos/static/js/action_handlers.js +213 -0
  49. ivoryos/static/js/db_delete.js +23 -0
  50. ivoryos/static/js/overlay.js +12 -0
  51. ivoryos/static/js/script_metadata.js +39 -0
  52. ivoryos/static/js/socket_handler.js +125 -0
  53. ivoryos/static/js/sortable_card.js +24 -0
  54. ivoryos/static/js/sortable_design.js +138 -0
  55. ivoryos/static/js/ui_state.js +113 -0
  56. ivoryos/static/logo.webp +0 -0
  57. ivoryos/static/style.css +211 -0
  58. ivoryos/templates/base.html +157 -0
  59. ivoryos/utils/serilize.py +4 -6
  60. ivoryos/version.py +1 -1
  61. {ivoryos-1.2.1.dist-info → ivoryos-1.2.3.dist-info}/METADATA +9 -5
  62. ivoryos-1.2.3.dist-info/RECORD +100 -0
  63. {ivoryos-1.2.1.dist-info → ivoryos-1.2.3.dist-info}/WHEEL +1 -1
  64. {ivoryos-1.2.1.dist-info → ivoryos-1.2.3.dist-info}/top_level.txt +0 -1
  65. ivoryos-1.2.1.dist-info/RECORD +0 -51
  66. tests/__init__.py +0 -0
  67. tests/conftest.py +0 -133
  68. tests/integration/__init__.py +0 -0
  69. tests/integration/test_route_auth.py +0 -80
  70. tests/integration/test_route_control.py +0 -94
  71. tests/integration/test_route_database.py +0 -61
  72. tests/integration/test_route_design.py +0 -36
  73. tests/integration/test_route_main.py +0 -35
  74. tests/integration/test_sockets.py +0 -26
  75. {ivoryos-1.2.1.dist-info → ivoryos-1.2.3.dist-info/licenses}/LICENSE +0 -0
@@ -0,0 +1,211 @@
1
+ .login {
2
+ width: 500px;
3
+ padding: 8% 0 0;
4
+ margin: auto;
5
+ align-content: center;
6
+ }
7
+ .card{
8
+ display: flex;
9
+ justify-content: flex-end;
10
+ cursor: move;
11
+ border: none;
12
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
13
+
14
+ }
15
+
16
+ .card a {
17
+ text-decoration: none;
18
+ }
19
+ .card-title {
20
+ color: #007bff; /* Bootstrap primary color */
21
+ }
22
+ .grid-container {
23
+ display: grid;
24
+ grid-template-columns: repeat(auto-fit, minmax(350px, 400px));
25
+ gap: 25px;
26
+ padding: 10px;
27
+ }
28
+ .navbar-nav {
29
+ font-size: larger;
30
+ }
31
+ .navbar-nav li{
32
+ margin-right:10px;
33
+ margin-left:10px;
34
+ }
35
+
36
+ .canvas {
37
+ height: 70vh;
38
+ overflow: hidden;
39
+ overflow-y: scroll;
40
+ background: #e8e8cd;
41
+ background-size: 20px 20px;
42
+ background-image: radial-gradient(circle, cadetblue 1px, rgba(0, 0, 0, 0) 1px);
43
+ }
44
+
45
+ .canvas content{
46
+ margin-top: 10px;
47
+ }
48
+ body {
49
+ padding-top: 100px;
50
+ background-color: #f8f9fa; /* Light grey background */
51
+ font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
52
+ }
53
+ /*.run-panel-row-height {*/
54
+ /* height: 80vh;*/
55
+ /*}*/
56
+ pre {
57
+ tab-size: 4;
58
+ }
59
+ .scroll-column{
60
+ height: 90vh;
61
+ overflow: hidden;
62
+ overflow-y: scroll;
63
+ }
64
+
65
+ label {
66
+ display:block
67
+ }
68
+
69
+ .scroll {
70
+ overflow: auto;
71
+ -webkit-overflow-scrolling: touch; /* enables momentum-scrolling on iOS */
72
+ position: absolute;
73
+ top: 0;
74
+ left: 0;
75
+ right: 0;
76
+ bottom: 0;
77
+ }
78
+
79
+
80
+ /*Remove the scrollbar from Chrome, Safari, Edge and IE*/
81
+ ::-webkit-scrollbar {
82
+ background: transparent;
83
+ }
84
+
85
+ * {
86
+ -ms-overflow-style: none !important;
87
+ }
88
+ .script-table{
89
+ background: white;
90
+ width: fit-content;
91
+ }
92
+ .script-table td {
93
+ border-bottom: none;
94
+ border-top: cadetblue;
95
+ }
96
+ .script-table th{
97
+ border-top: cadetblue;
98
+ border-bottom: none;
99
+ }
100
+
101
+ .bottom-button {
102
+ position: absolute;
103
+ bottom: 20px;
104
+ }
105
+
106
+ hr.vertical {
107
+ width: 5px;
108
+ height: 100%;
109
+ display: inline-block;
110
+ /* or height in PX */
111
+ }
112
+ .list-group a {
113
+ text-align: left;
114
+ }
115
+
116
+ .tray input[type="checkbox"]:checked + label{
117
+ background: radial-gradient(circle, white 40%, midnightblue, dodgerblue 43%);
118
+ }
119
+
120
+ .btn-vial{
121
+ height: 50px;
122
+ width: 50px;
123
+ border-radius: 50%;
124
+ background: lightgray;
125
+ margin-right: 10px;
126
+ margin-top: 10px;
127
+ /*text-align: center;*/
128
+
129
+ }
130
+
131
+ .tray {
132
+ width: 70px;
133
+ height: 70px;
134
+ display: inline-block;
135
+ background: darkgrey;
136
+ /*text-align:center;*/
137
+ vertical-align: middle;
138
+ }
139
+
140
+ .disabled-link {
141
+ pointer-events: none;
142
+ color: currentColor;
143
+ cursor: not-allowed;
144
+ opacity: 0.5;
145
+ text-decoration: none;
146
+ }
147
+
148
+
149
+ .controller-card a {
150
+ text-decoration: none;
151
+ }
152
+
153
+ #logging-panel {
154
+ flex-grow: 1;
155
+ height: 50vh;
156
+ overflow-y: auto;
157
+ background-color: #f5f5f5;
158
+ padding: 10px;
159
+ }
160
+
161
+ .dropdown:hover .dropdown-menu {
162
+ display: block;
163
+ }
164
+
165
+ #reorder {
166
+ overflow-y: scroll;
167
+ -webkit-overflow-scrolling: touch;
168
+ }
169
+
170
+ .accordion-item.design-control .accordion-button.collapsed {
171
+ background-color:#c1f2f1 !important;
172
+ }
173
+ .accordion-item.design-control .accordion-button {
174
+ background-color:#b3dad9 !important;
175
+ }
176
+ .accordion-item.design-control .accordion-button:hover {
177
+ background-color:#b3dad9 !important;
178
+ }
179
+
180
+ .accordion-item.text-to-code .accordion-button.collapsed {
181
+ background-color: #cdc1f2 !important;
182
+ }
183
+ .accordion-item.text-to-code .accordion-button {
184
+ background-color: #cdc1f2 !important;
185
+ }
186
+ .accordion-item.text-to-code .accordion-button:hover {
187
+ background-color: #b8afdc !important;
188
+ }
189
+ .overlay {
190
+ position: fixed;
191
+ top: 0;
192
+ left: 0;
193
+ width: 100%;
194
+ height: 100%;
195
+ background-color: rgba(0, 0, 0, 0.5);
196
+ display: none;
197
+ z-index: 1000;
198
+ text-align: center;
199
+ color: white;
200
+ font-size: 24px;
201
+ padding-top: 20%;
202
+ }
203
+ .drop-placeholder {
204
+ height: 2px !important; /* Keep it very thin */
205
+ min-height: 2px !important;
206
+ margin: 0 !important;
207
+ padding: 0 !important;
208
+ background: rgba(0, 0, 0, 0.2); /* Slight visibility */
209
+ border-radius: 2px;
210
+ list-style: none; /* Remove any default list styling */
211
+ }
@@ -0,0 +1,157 @@
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">
6
+ <title>{% block title %}{% endblock %}</title>
7
+ {#bootstrap#}
8
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha2/dist/css/bootstrap.min.css" integrity="sha384-aFq/bzH65dt+w6FI2ooMVUpc+21e0SRygnTpmBvdBgSdnuTN7QbdgL+OapgHtvPp" crossorigin="anonymous">
9
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.css">
10
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
11
+ {#static#}
12
+ <link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
13
+ <link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}" type="image/x-icon">
14
+ {#for python code displaying#}
15
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/default.min.css">
16
+ <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha2/dist/js/bootstrap.bundle.min.js" integrity="sha384-qKXV1j0HvMUeCBQ+QVp7JcfGl760yU08IQ+GpUo5hlbpg51QRiuqHAJz8+BrxE/N" crossorigin="anonymous"></script>
17
+ <script>hljs.highlightAll();</script>
18
+ {#drag design#}
19
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
20
+ {#drag card#}
21
+ <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
22
+ </head>
23
+ <body>
24
+ <nav class="navbar navbar-expand-lg navbar-light bg-light fixed-top">
25
+ <div class= "container">
26
+ {# {{ module_config }}#}
27
+ <a class="navbar-brand" href="{{ url_for('main.index') }}">
28
+ <img src="{{url_for('static', filename='logo.webp')}}" alt="Logo" height="60" class="d-inline-block align-text-bottom">
29
+ </a>
30
+ <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
31
+ <span class="navbar-toggler-icon"></span>
32
+ </button>
33
+
34
+ <div class="collapse navbar-collapse" id="navbarSupportedContent">
35
+ <ul class="navbar-nav mr-auto">
36
+ <li class="nav-item">
37
+ <a class="nav-link" href="{{ url_for('main.index') }}" aria-current="page">Home</a>
38
+ </li>
39
+ {% if enable_design %}
40
+ <li class="nav-item">
41
+ <a class="nav-link" href="{{ url_for('library.load_from_database') }}" aria-current="page">Library</a>
42
+ </li>
43
+ <li class="nav-item">
44
+ <a class="nav-link" href="{{ url_for('design.experiment_builder') }}">Design</a>
45
+ </li>
46
+ <li class="nav-item">
47
+ <a class="nav-link" href="{{ url_for('execute.experiment_run') }}">Compile/Run</a>
48
+ </li>
49
+ <li class="nav-item">
50
+ <a class="nav-link" href="{{ url_for('data.list_workflows') }}">Data</a>
51
+ </li>
52
+ {% endif %}
53
+
54
+ <li class="nav-item">
55
+ <a class="nav-link" href="{{ url_for('control.deck_controllers') }}">Devices</a></li>
56
+ </li>
57
+ {# <li class="nav-item">#}
58
+ {# <a class="nav-link" href="{{ url_for('control.controllers_home') }}">Temp Devices</a></li>#}
59
+ {# </li>#}
60
+ {# <li class="nav-item">#}
61
+ {# <a class="nav-link" href="{{ url_for('main.help_info') }}">About</a>#}
62
+ {# </li>#}
63
+ {% if plugins %}
64
+ {% for plugin in plugins %}
65
+ <li class="nav-item">
66
+ <a class="nav-link" href="{{ url_for(plugin+'.main') }}">{{ plugin.capitalize() }}</a></li>
67
+ </li>
68
+ {% endfor %}
69
+ {% endif %}
70
+ </ul>
71
+ <ul class="navbar-nav ms-auto">
72
+ {# {{ current_user }}#}
73
+ {% if current_user.is_authenticated %}
74
+ <div class="dropdown">
75
+ <li class="nav-item " aria-expanded="false"><i class="bi bi-person-circle"></i> {{ current_user.get_id() }}</li>
76
+ <ul class="dropdown-menu">
77
+ <li><a class="dropdown-item" href="{{ url_for("auth.logout") }}" role="button" aria-expanded="false">Logout</a></li>
78
+ </ul>
79
+
80
+ </div>
81
+ {% else %}
82
+ <li class="nav-item">
83
+ <a class="nav-link" href="{{ url_for("auth.login") }}">Login</a>
84
+ </li>
85
+ {% endif %}
86
+ {# <li class="nav-item">#}
87
+ {# <a class="nav-link"href="{{ url_for("signup") }}">Signup</a>#}
88
+ {# </li>#}
89
+ </ul>
90
+ </div>
91
+ </div>
92
+ </nav>
93
+
94
+ <div class= "container">
95
+ <div class="flash">
96
+ {% with messages = get_flashed_messages() %}
97
+ {% if messages %}
98
+ <div class="alert alert-warning">
99
+ Message:
100
+ {% for message in messages %}
101
+ <div >
102
+ {{ message|safe }}
103
+ </div>
104
+ {% endfor %}
105
+ </div>
106
+ {% endif %}
107
+ {% endwith %}
108
+ </div>
109
+ {% block body %}{% endblock %}
110
+ </div>
111
+
112
+ <div class="modal fade" id="importModal" tabindex="-1" aria-labelledby="importModal" aria-hidden="true" >
113
+ <div class="modal-dialog">
114
+ <div class="modal-content">
115
+ <div class="modal-header">
116
+ <h1 class="modal-title fs-5" id="importModal">Import deck by file path</h1>
117
+ <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
118
+ </div>
119
+ <form method="POST" action="{{ url_for('control.temp.import_deck') }}" enctype="multipart/form-data">
120
+ <div class="modal-body">
121
+ <h5>from connection history</h5>
122
+ <div class="form-group">
123
+ <select class="form-select" name="filepath">
124
+ <option disabled selected value> -- select an option -- </option>
125
+ {% for connection in history %}
126
+ <option style="overflow-wrap: break-word;" name="filepath" id="filepath" value="{{connection}}">{{connection}}</option>
127
+ {% endfor %}
128
+ {# <option>clear history</option>#}
129
+ </select>
130
+ </div>
131
+ <h5>input manually</h5>
132
+ <div class="input-group mb-3">
133
+ <label class="input-group-text" for="filepath">File Path:</label>
134
+ <input type="text" class="form-control" name="filepath" id="filepath">
135
+ </div>
136
+ <div class="input-group mb-3">
137
+ <div class="form-check">
138
+ <input type="checkbox" class="form-check-input" id="update" name="update" value="update">
139
+ <label class="form-check-label" for="update">Update editor config</label>
140
+ </div>
141
+ </div>
142
+
143
+ <div class="modal-footer">
144
+ <div class="form-check">
145
+ <input type="checkbox" class="form-check-input" id="dismiss" name="dismiss" value="dismiss">
146
+ <label class="form-check-label" for="dismiss">Don't remind me</label>
147
+ </div>
148
+ <button type="button" class="btn btn-secondary" data-bs-dismiss="modal"> Close </button>
149
+ <button type="submit" class="btn btn-primary"> Save </button>
150
+ </div>
151
+ </div>
152
+ </form>
153
+ </div>
154
+ </div>
155
+ </div>
156
+ </body>
157
+ </html>
ivoryos/utils/serilize.py CHANGED
@@ -7,8 +7,8 @@ import sys
7
7
 
8
8
  import flask
9
9
 
10
- from example.abstract_sdl_example.abstract_balance import AbstractBalance
11
- from example.abstract_sdl_example.abstract_pump import AbstractPump
10
+ from example.abstract_sdl_example import abstract_sdl as deck
11
+
12
12
 
13
13
 
14
14
  class ScriptAnalyzer:
@@ -179,14 +179,12 @@ class ScriptAnalyzer:
179
179
  print(f" {name}: {error}")
180
180
 
181
181
  if __name__ == "__main__":
182
- balance = AbstractBalance("re")
183
- pump = AbstractPump("re")
184
182
 
185
183
  _analyzer = ScriptAnalyzer()
186
- module = sys.modules[__name__]
184
+ # module = sys.modules[deck]
187
185
  try:
188
186
 
189
- result, with_warnings, failed, _ = _analyzer.analyze_module(module)
187
+ result, with_warnings, failed, _ = _analyzer.analyze_module(deck)
190
188
 
191
189
  output_path = f"analysis.json"
192
190
  _analyzer.save_to_json(result, output_path)
ivoryos/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "1.2.1"
1
+ __version__ = "1.2.3"
@@ -1,11 +1,11 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: ivoryos
3
- Version: 1.2.1
3
+ Version: 1.2.3
4
4
  Summary: an open-source Python package enabling Self-Driving Labs (SDLs) interoperability
5
- Home-page: https://gitlab.com/heingroup/ivoryos
6
- Author: Ivory Zhang
7
- Author-email: ivoryzhang@chem.ubc.ca
5
+ Author-email: Ivory Zhang <ivoryzhang@chem.ubc.ca>
8
6
  License: MIT
7
+ Project-URL: Homepage, https://gitlab.com/heingroup/ivoryos
8
+ Requires-Python: >=3.7
9
9
  Description-Content-Type: text/markdown
10
10
  License-File: LICENSE
11
11
  Requires-Dist: bcrypt
@@ -17,6 +17,10 @@ Requires-Dist: Flask-WTF
17
17
  Requires-Dist: SQLAlchemy-Utils
18
18
  Requires-Dist: python-dotenv
19
19
  Requires-Dist: astor; python_version < "3.9"
20
+ Provides-Extra: optimizer
21
+ Requires-Dist: ax-platform; extra == "optimizer"
22
+ Requires-Dist: baybe; extra == "optimizer"
23
+ Dynamic: license-file
20
24
 
21
25
  [![Documentation Status](https://readthedocs.org/projects/ivoryos/badge/?version=latest)](https://ivoryos.readthedocs.io/en/latest/?badge=latest)
22
26
  [![PyPI version](https://img.shields.io/pypi/v/ivoryos)](https://pypi.org/project/ivoryos/)
@@ -0,0 +1,100 @@
1
+ ivoryos/__init__.py,sha256=x4PnDTbhx1ZTugfuclGQ03GO3yidAfiUFU7vuGyKD8M,9830
2
+ ivoryos/config.py,sha256=y3RxNjiIola9tK7jg-mHM8EzLMwiLwOzoisXkDvj0gA,2174
3
+ ivoryos/socket_handlers.py,sha256=VWVWiIdm4jYAutwGu6R0t1nK5MuMyOCL0xAnFn06jWQ,1302
4
+ ivoryos/version.py,sha256=C-D_WWrVkBDmQmApLcm0sWNh2CgIrwWfc8_sB5vvU-Q,22
5
+ ivoryos/optimizer/ax_optimizer.py,sha256=PoSu8hrDFFpqyhRBnaSMswIUsDfEX6sPWt8NEZ_sobs,7112
6
+ ivoryos/optimizer/base_optimizer.py,sha256=JTbUharZKn0t8_BDbAFuwZIbT1VOnX1Xuog1pJuU8hY,1992
7
+ ivoryos/optimizer/baybe_optimizer.py,sha256=EdrrRiYO-IOx610cPXiQhH4qG8knUP0uiZ0YoyaGIU8,7954
8
+ ivoryos/optimizer/registry.py,sha256=lr0cqdI2iEjw227ZPRpVkvsdYdddjeJJRzawDv77cEc,219
9
+ ivoryos/routes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
+ ivoryos/routes/api/api.py,sha256=X_aZMB_nCxW41pqZpJOiEEwGmlqLqJUArruevuy41v0,2284
11
+ ivoryos/routes/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
+ ivoryos/routes/auth/auth.py,sha256=CqoP9cM8BuXVGHGujX7-0sNAOdWILU9amyBrObOD6Ss,3283
13
+ ivoryos/routes/auth/templates/login.html,sha256=WSRrKbdM_oobqSXFRTo-j9UlOgp6sYzS9tm7TqqPULI,1207
14
+ ivoryos/routes/auth/templates/signup.html,sha256=b5LTXtpfTSkSS7X8u1ldwQbbgEFTk6UNMAediA5BwBY,1465
15
+ ivoryos/routes/control/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
+ ivoryos/routes/control/control.py,sha256=Vmy3GRZz8EbKmV9qslR8gsaYaYzb5HQTpukp42HfMow,5236
17
+ ivoryos/routes/control/control_file.py,sha256=NIAzwhswvpl3u0mansy1ku-rPDybS5hVbmbnymOikWk,1548
18
+ ivoryos/routes/control/control_new_device.py,sha256=mfJKg5JAOagIpUKbp2b5nRwvd2V3bzT3M0zIhIsEaFM,5456
19
+ ivoryos/routes/control/utils.py,sha256=at11wA5HPAZN4BfMaymj1GKEvRTrqi4Wg6cTqUZJDjU,1155
20
+ ivoryos/routes/control/templates/controllers.html,sha256=tgtTuns8S2Pf6XKeojinQZ1bz112ieRGLPF5-1cElfE,8030
21
+ ivoryos/routes/control/templates/controllers_new.html,sha256=eVeLABT39DWOIYrwWClw7sAD3lCoAGCznygPgFbQoRc,5945
22
+ ivoryos/routes/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
+ ivoryos/routes/data/data.py,sha256=AoqCaIAK0f9hstF1pxlJFeK_J-wKbMfXWGNDUbaBFFk,4218
24
+ ivoryos/routes/data/templates/workflow_database.html,sha256=ofvHcovpwmJXo1SFiSrL8I9kLU_3U1UxsJUUrQ2CJUU,4878
25
+ ivoryos/routes/data/templates/workflow_view.html,sha256=72xKreX9WhYx-0n0cFf-CL-fJIWXPCIaTi_Aa8Tq3xg,3651
26
+ ivoryos/routes/data/templates/components/step_card.html,sha256=9lKR4NCgU2v5Nbdv2uaJ-9aKibtiB_2-Y_kyHX6Ka1k,730
27
+ ivoryos/routes/design/__init__.py,sha256=zS3HXKaw0ALL5n6t_W1rUz5Uj5_tTQ-Y1VMXyzewvR0,113
28
+ ivoryos/routes/design/design.py,sha256=F5X0Wa1sXSdolQ8w87wQBv6bN7jMwCnQ4jX8r4SkO24,17763
29
+ ivoryos/routes/design/design_file.py,sha256=m4yku8fkpLUs4XvLJBqR5V-kyaGKbGB6ZoRxGbjEU5Q,2140
30
+ ivoryos/routes/design/design_step.py,sha256=l8U3-FuXmap__sYm51AueKdbTaLCFaKjAz-j02b4g-E,5200
31
+ ivoryos/routes/design/templates/experiment_builder.html,sha256=hh-d2tOc_40gww5WfUYIf8sM3qBaALZnR8Sx7Ja4tpU,1623
32
+ ivoryos/routes/design/templates/components/action_form.html,sha256=ktnmXVwe2WFLM6Sg_VbBfDrPXrnongSUxjpYhZGamPY,3058
33
+ ivoryos/routes/design/templates/components/actions_panel.html,sha256=jHTR58saTUIZInBdC-vLc1ZTbStLiULeWbupjB4hQzo,977
34
+ ivoryos/routes/design/templates/components/autofill_toggle.html,sha256=CRVQUHoQT7sOSO5-Vax54ImHdT4G_mEgqR5OQkeUwK8,617
35
+ ivoryos/routes/design/templates/components/canvas.html,sha256=bKLCJaG1B36Yy9Vsnz4P5qiX4BPdfaGe9JeQQzu9rsI,268
36
+ ivoryos/routes/design/templates/components/canvas_footer.html,sha256=5VRRacMZbzx0hUej0NPP-PmXM_AtUqduHzDS7a60cQY,435
37
+ ivoryos/routes/design/templates/components/canvas_header.html,sha256=7iIzLDGHX7MnmBbf98nWtLDprbeIgoNV4dJUO1zE4Tc,3598
38
+ ivoryos/routes/design/templates/components/canvas_main.html,sha256=9inYO700zRa09lfQI2NY4FJGGeTh-9rvX4ltjj0LK3k,1432
39
+ ivoryos/routes/design/templates/components/deck_selector.html,sha256=ryTRpljYezo0AzGLCJu_qOMokjjnft3GIxddmNGtBA0,657
40
+ ivoryos/routes/design/templates/components/edit_action_form.html,sha256=Dz7FnnOK4PYptAHNy9_WFCU1RZTSV61-1lNHHOSRJNs,1876
41
+ ivoryos/routes/design/templates/components/instruments_panel.html,sha256=r1jnScVRAknrRPRbAnIVApfnx9f4yavgf9ZlNhNpjW4,3135
42
+ ivoryos/routes/design/templates/components/modals.html,sha256=6Dl8I8oD4ln7kK8C5e92pFVVH5KDte-vVTL0U_6NSTg,306
43
+ ivoryos/routes/design/templates/components/python_code_overlay.html,sha256=GUHgsmUWQf0P1Fbg5W0OJC34TXCUIMQVUkS7KDoauyI,1264
44
+ ivoryos/routes/design/templates/components/sidebar.html,sha256=A6dRo53zIB6QJVrRLJcBZHUNJ3qpYPnR3kWxM8gTkjw,501
45
+ ivoryos/routes/design/templates/components/text_to_code_panel.html,sha256=d-omdXk-PXAR5AyWPr4Rc4pqsebZOiTiMrnz3pPCnUY,1197
46
+ ivoryos/routes/design/templates/components/modals/drop_modal.html,sha256=LPxcycSiBjdQbajYOegjMQEi7ValcaczGoWmW8Sz3Ms,779
47
+ ivoryos/routes/design/templates/components/modals/json_modal.html,sha256=R-SeEdhtuDVbwOWYYH_hCdpul7y4ybCWoNwVIO5j49s,1122
48
+ ivoryos/routes/design/templates/components/modals/new_script_modal.html,sha256=pxZdWWDgI52VsTFzz6pIM9m_dTwR6jARcvCYQ6fV3Lc,937
49
+ ivoryos/routes/design/templates/components/modals/rename_modal.html,sha256=40rLNF9JprdXekB3mv_S3OdqVuQYOe-BZSCgOnIkxJQ,1202
50
+ ivoryos/routes/design/templates/components/modals/saveas_modal.html,sha256=N5PEqUuK3qxDFbtDKFnzHwhLarQLPHiX-XQAdQPL1AU,1555
51
+ ivoryos/routes/execute/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
+ ivoryos/routes/execute/execute.py,sha256=hFnCvzO1OzR0XckCRzHfP_RZV70DtbH_p7kw1YhIe3o,12250
53
+ ivoryos/routes/execute/execute_file.py,sha256=TelWYV295p4ZPhkUDJSVxfYROfVaKodEmDPTS2plQHI,2816
54
+ ivoryos/routes/execute/templates/experiment_run.html,sha256=D-ek7ISQrIQXy4PH37TnsURihbGNdpCgdTC8w79cwQc,10355
55
+ ivoryos/routes/execute/templates/components/error_modal.html,sha256=5Dmp9V0Ys6781Y-pKn_mc4N9J46c8EwIkjkHX22xCsw,1025
56
+ ivoryos/routes/execute/templates/components/logging_panel.html,sha256=FllozlPd6o7uBd8eflGjRktPV435J3XgiEeLZugoUi0,1623
57
+ ivoryos/routes/execute/templates/components/progress_panel.html,sha256=-nX76aFLxSOiYgI1xMjznC9rDYF-Vb92TmfjXYpBtps,1323
58
+ ivoryos/routes/execute/templates/components/run_panel.html,sha256=CmK-LYJ4K6RonHn6l9eJkqRw0XQizThOugxiXZonSDs,373
59
+ ivoryos/routes/execute/templates/components/run_tabs.html,sha256=u-msoTQPBGvyE_5_UczRtR9bh7zD3EvsgJhT77rTzOI,1145
60
+ ivoryos/routes/execute/templates/components/tab_bayesian.html,sha256=5XTMHZzbGxcCZ2M0LSRqqmVh4qmu0R1MjCkT_FQ0ag0,21314
61
+ ivoryos/routes/execute/templates/components/tab_configuration.html,sha256=JIHsYvwcYQZmJJz503NXnhcceKxd9B3JKFUSvGNWe_0,5131
62
+ ivoryos/routes/execute/templates/components/tab_repeat.html,sha256=X-r7p78tVRrfwmAbhhZGBZbm78C4nTJS6O2A4dvzGEg,760
63
+ ivoryos/routes/library/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
+ ivoryos/routes/library/library.py,sha256=ZruIoaa06GlqpvJ383PSDEFdlPJFl2E2YI0H8aK7Hc0,5477
65
+ ivoryos/routes/library/templates/library.html,sha256=kMaQphkoGQdxIRcQmVcEIn8eghuv2AAClHpo7jGDVv8,4021
66
+ ivoryos/routes/main/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
67
+ ivoryos/routes/main/main.py,sha256=1AcSouCocHWjlpEED-ECn5OFiu0-3u0N-0st5RtKCVY,952
68
+ ivoryos/routes/main/templates/help.html,sha256=IOktMEsOPk0SCiMBXZ4mpffClERAyX8W82fel71M3M0,9370
69
+ ivoryos/routes/main/templates/home.html,sha256=BDvwkVthxniQ157H6E2hgYHT1Vv1GVBwu6dQejtzwoo,4633
70
+ ivoryos/static/favicon.ico,sha256=RhlrPtfITOkzC9BjP1UB1V5L9Oyp6NwNtWeMcGOnpyc,15406
71
+ ivoryos/static/logo.webp,sha256=lXgfQR-4mHTH83k7VV9iB54-oC2ipe6uZvbwdOnLETc,14974
72
+ ivoryos/static/style.css,sha256=zQVx35A5g6JMJ-K84-6fSKtzXGjp_p5ZVG6KLHPM2IE,4021
73
+ ivoryos/static/gui_annotation/Slide1.png,sha256=Lm4gdOkUF5HIUFaB94tl6koQVkzpitKj43GXV_XYMMc,121727
74
+ ivoryos/static/gui_annotation/Slide2.PNG,sha256=z3wQ9oVgg4JTWVLQGKK_KhtepRHUYP1e05XUWGT2A0I,118761
75
+ ivoryos/static/js/action_handlers.js,sha256=VEDox3gQvg0YXJ6WW6IthOsFqZKmvUGJ8pmQdfzHQFw,5122
76
+ ivoryos/static/js/db_delete.js,sha256=l67fqUaN_FVDaL7v91Hd7LyRbxnqXx9nyjF34-7aewY,561
77
+ ivoryos/static/js/overlay.js,sha256=dPxop19es0E0ZUSY3d_4exIk7CJuQEnlW5uTt5fZfzI,483
78
+ ivoryos/static/js/script_metadata.js,sha256=m8VYZ8OGT2oTx1kXMXq60bKQI9WCbJNkzcFDzLvRuGc,1188
79
+ ivoryos/static/js/socket_handler.js,sha256=2Iyv_3METjhSlSavs_L9FE3PKY4xDEpfzJpd2FywY9o,5300
80
+ ivoryos/static/js/sortable_card.js,sha256=ifmlGe3yy0U_KzMphV4ClRhK2DLOvkELYMlq1vECuac,807
81
+ ivoryos/static/js/sortable_design.js,sha256=QqYyk385JNm6zCgZK_Oa-cJEP1uPtZ_tVz27x4hyx5A,4790
82
+ ivoryos/static/js/ui_state.js,sha256=5EuqwIDndjZTqj9dsAR_IA91iGMcodY_TuQo17LLL1w,3331
83
+ ivoryos/templates/base.html,sha256=cl5w6E8yskbUzdiJFal6fZjnPuFNKEzc7BrrbRd6bMI,8581
84
+ ivoryos/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
+ ivoryos/utils/bo_campaign.py,sha256=Fil-zT7JexL_p9XqyWByjAk42XB1R9XUKN8CdV5bi6c,9714
86
+ ivoryos/utils/client_proxy.py,sha256=0OT2xTMkqh_2ybgCxMV_71ZVUThWwrsnAhTIBY5vDR8,2095
87
+ ivoryos/utils/db_models.py,sha256=baE4LJcSGUj10Tj6imfINXi4JQX_4oLv_kb9bd0rp-M,27920
88
+ ivoryos/utils/form.py,sha256=eIk1N77Ynxc4Omww5ZYlmpOIJfQPWto2qfiU6nzIIeQ,21755
89
+ ivoryos/utils/global_config.py,sha256=zNO9GYhGn7El3msWoxJIm3S4Mzb3VMh2i5ZEsVtvb2Q,2463
90
+ ivoryos/utils/llm_agent.py,sha256=-lVCkjPlpLues9sNTmaT7bT4sdhWvV2DiojNwzB2Lcw,6422
91
+ ivoryos/utils/py_to_json.py,sha256=fyqjaxDHPh-sahgT6IHSn34ktwf6y51_x1qvhbNlH-U,7314
92
+ ivoryos/utils/script_runner.py,sha256=g3_pLYcu6gF9sPjhW9WRlwMH7ScDpz_MqMJzxNayfyg,16725
93
+ ivoryos/utils/serilize.py,sha256=lkBhkz8r2bLmz2_xOb0c4ptSSOqjIu6krj5YYK4Nvj8,6784
94
+ ivoryos/utils/task_runner.py,sha256=cDIcmDaqYh0vXoYaL_kO877pluAo2tyfsHl9OgZqJJE,3029
95
+ ivoryos/utils/utils.py,sha256=-WiU0_brszB9yDsiQepf_7SzNgPTSpul2RSKDOY3pqo,13921
96
+ ivoryos-1.2.3.dist-info/licenses/LICENSE,sha256=p2c8S8i-8YqMpZCJnadLz1-ofxnRMILzz6NCMIypRag,1084
97
+ ivoryos-1.2.3.dist-info/METADATA,sha256=HZPZvy7QwKlAtnKsh41WPjbl7UK7hVbOkteIWuNmZn8,9416
98
+ ivoryos-1.2.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
99
+ ivoryos-1.2.3.dist-info/top_level.txt,sha256=FRIWWdiEvRKqw-XfF_UK3XV0CrnNb6EmVbEgjaVazRM,8
100
+ ivoryos-1.2.3.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.45.1)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,51 +0,0 @@
1
- ivoryos/__init__.py,sha256=x4PnDTbhx1ZTugfuclGQ03GO3yidAfiUFU7vuGyKD8M,9830
2
- ivoryos/config.py,sha256=y3RxNjiIola9tK7jg-mHM8EzLMwiLwOzoisXkDvj0gA,2174
3
- ivoryos/socket_handlers.py,sha256=VWVWiIdm4jYAutwGu6R0t1nK5MuMyOCL0xAnFn06jWQ,1302
4
- ivoryos/version.py,sha256=Mlm4Gvmb_6yQxwUbv2Ksc-BJFXLPg9H1Vt2iV7wXrA4,22
5
- ivoryos/routes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- ivoryos/routes/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
- ivoryos/routes/auth/auth.py,sha256=CqoP9cM8BuXVGHGujX7-0sNAOdWILU9amyBrObOD6Ss,3283
8
- ivoryos/routes/control/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
- ivoryos/routes/control/control.py,sha256=Vmy3GRZz8EbKmV9qslR8gsaYaYzb5HQTpukp42HfMow,5236
10
- ivoryos/routes/control/control_file.py,sha256=NIAzwhswvpl3u0mansy1ku-rPDybS5hVbmbnymOikWk,1548
11
- ivoryos/routes/control/control_new_device.py,sha256=mfJKg5JAOagIpUKbp2b5nRwvd2V3bzT3M0zIhIsEaFM,5456
12
- ivoryos/routes/control/utils.py,sha256=at11wA5HPAZN4BfMaymj1GKEvRTrqi4Wg6cTqUZJDjU,1155
13
- ivoryos/routes/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- ivoryos/routes/data/data.py,sha256=AoqCaIAK0f9hstF1pxlJFeK_J-wKbMfXWGNDUbaBFFk,4218
15
- ivoryos/routes/design/__init__.py,sha256=zS3HXKaw0ALL5n6t_W1rUz5Uj5_tTQ-Y1VMXyzewvR0,113
16
- ivoryos/routes/design/design.py,sha256=F5X0Wa1sXSdolQ8w87wQBv6bN7jMwCnQ4jX8r4SkO24,17763
17
- ivoryos/routes/design/design_file.py,sha256=m4yku8fkpLUs4XvLJBqR5V-kyaGKbGB6ZoRxGbjEU5Q,2140
18
- ivoryos/routes/design/design_step.py,sha256=l8U3-FuXmap__sYm51AueKdbTaLCFaKjAz-j02b4g-E,5200
19
- ivoryos/routes/execute/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
- ivoryos/routes/execute/execute.py,sha256=hFnCvzO1OzR0XckCRzHfP_RZV70DtbH_p7kw1YhIe3o,12250
21
- ivoryos/routes/execute/execute_file.py,sha256=TelWYV295p4ZPhkUDJSVxfYROfVaKodEmDPTS2plQHI,2816
22
- ivoryos/routes/library/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
- ivoryos/routes/library/library.py,sha256=ZruIoaa06GlqpvJ383PSDEFdlPJFl2E2YI0H8aK7Hc0,5477
24
- ivoryos/routes/main/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
- ivoryos/routes/main/main.py,sha256=1AcSouCocHWjlpEED-ECn5OFiu0-3u0N-0st5RtKCVY,952
26
- ivoryos/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
- ivoryos/utils/bo_campaign.py,sha256=Fil-zT7JexL_p9XqyWByjAk42XB1R9XUKN8CdV5bi6c,9714
28
- ivoryos/utils/client_proxy.py,sha256=0OT2xTMkqh_2ybgCxMV_71ZVUThWwrsnAhTIBY5vDR8,2095
29
- ivoryos/utils/db_models.py,sha256=baE4LJcSGUj10Tj6imfINXi4JQX_4oLv_kb9bd0rp-M,27920
30
- ivoryos/utils/form.py,sha256=eIk1N77Ynxc4Omww5ZYlmpOIJfQPWto2qfiU6nzIIeQ,21755
31
- ivoryos/utils/global_config.py,sha256=zNO9GYhGn7El3msWoxJIm3S4Mzb3VMh2i5ZEsVtvb2Q,2463
32
- ivoryos/utils/llm_agent.py,sha256=-lVCkjPlpLues9sNTmaT7bT4sdhWvV2DiojNwzB2Lcw,6422
33
- ivoryos/utils/py_to_json.py,sha256=fyqjaxDHPh-sahgT6IHSn34ktwf6y51_x1qvhbNlH-U,7314
34
- ivoryos/utils/script_runner.py,sha256=g3_pLYcu6gF9sPjhW9WRlwMH7ScDpz_MqMJzxNayfyg,16725
35
- ivoryos/utils/serilize.py,sha256=Ded3Vbicl4KYN8GJ_gY7HJMuInAeFZEPk5ZtuEtHPns,6933
36
- ivoryos/utils/task_runner.py,sha256=cDIcmDaqYh0vXoYaL_kO877pluAo2tyfsHl9OgZqJJE,3029
37
- ivoryos/utils/utils.py,sha256=-WiU0_brszB9yDsiQepf_7SzNgPTSpul2RSKDOY3pqo,13921
38
- tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
- tests/conftest.py,sha256=u2sQ6U-Lghyl7et1Oz6J2E5VZ47VINKcjRM_2leAE2s,3627
40
- tests/integration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
- tests/integration/test_route_auth.py,sha256=l3ZDqr0oiCWS3yYSXGK5yMP6qI2t7Sv5I9zoYTkiyQU,2754
42
- tests/integration/test_route_control.py,sha256=YYIll84bTUEKiAxFiFSz6LF3fTldPNfCtHs0IR3mSdM,3935
43
- tests/integration/test_route_database.py,sha256=mS026W_hEuCTMpSkdRWvM-f4MYykK_6nRDJ4K5a7QA0,2342
44
- tests/integration/test_route_design.py,sha256=PJAvGRiCY6B53Pu1v5vPAVHHsuaqRmRKk2eesSNshLU,1157
45
- tests/integration/test_route_main.py,sha256=bmuf8Y_9CRWhiLLf4up11ltEd5YCdsLx6I-o26VGDEw,1228
46
- tests/integration/test_sockets.py,sha256=4ZyFyExm7a-DYzVqpzEONpWeb1a0IT68wyFaQu0rY_Y,925
47
- ivoryos-1.2.1.dist-info/LICENSE,sha256=p2c8S8i-8YqMpZCJnadLz1-ofxnRMILzz6NCMIypRag,1084
48
- ivoryos-1.2.1.dist-info/METADATA,sha256=AiQqfIiig_KOYF5ths0jGNMbax1YV44deM6wKwHwnAY,9247
49
- ivoryos-1.2.1.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
50
- ivoryos-1.2.1.dist-info/top_level.txt,sha256=mIOiZkdpSwxFJt1R5fsyOff8mNprXHq1nMGNKNULIyE,14
51
- ivoryos-1.2.1.dist-info/RECORD,,
tests/__init__.py DELETED
File without changes