ivoryos 1.2.2__py3-none-any.whl → 1.2.4__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 (64) hide show
  1. ivoryos/__init__.py +18 -18
  2. ivoryos/routes/auth/templates/login.html +25 -0
  3. ivoryos/routes/auth/templates/signup.html +32 -0
  4. ivoryos/routes/control/templates/controllers.html +166 -0
  5. ivoryos/routes/control/templates/controllers_new.html +112 -0
  6. ivoryos/routes/data/templates/components/step_card.html +13 -0
  7. ivoryos/routes/data/templates/workflow_database.html +109 -0
  8. ivoryos/routes/data/templates/workflow_view.html +130 -0
  9. ivoryos/routes/design/design.py +1 -1
  10. ivoryos/routes/design/templates/components/action_form.html +53 -0
  11. ivoryos/routes/design/templates/components/actions_panel.html +25 -0
  12. ivoryos/routes/design/templates/components/autofill_toggle.html +10 -0
  13. ivoryos/routes/design/templates/components/canvas.html +5 -0
  14. ivoryos/routes/design/templates/components/canvas_footer.html +9 -0
  15. ivoryos/routes/design/templates/components/canvas_header.html +75 -0
  16. ivoryos/routes/design/templates/components/canvas_main.html +34 -0
  17. ivoryos/routes/design/templates/components/deck_selector.html +10 -0
  18. ivoryos/routes/design/templates/components/edit_action_form.html +38 -0
  19. ivoryos/routes/design/templates/components/instruments_panel.html +66 -0
  20. ivoryos/routes/design/templates/components/modals/drop_modal.html +17 -0
  21. ivoryos/routes/design/templates/components/modals/json_modal.html +22 -0
  22. ivoryos/routes/design/templates/components/modals/new_script_modal.html +17 -0
  23. ivoryos/routes/design/templates/components/modals/rename_modal.html +23 -0
  24. ivoryos/routes/design/templates/components/modals/saveas_modal.html +27 -0
  25. ivoryos/routes/design/templates/components/modals.html +6 -0
  26. ivoryos/routes/design/templates/components/python_code_overlay.html +39 -0
  27. ivoryos/routes/design/templates/components/sidebar.html +15 -0
  28. ivoryos/routes/design/templates/components/text_to_code_panel.html +20 -0
  29. ivoryos/routes/design/templates/experiment_builder.html +41 -0
  30. ivoryos/routes/execute/templates/components/error_modal.html +20 -0
  31. ivoryos/routes/execute/templates/components/logging_panel.html +31 -0
  32. ivoryos/routes/execute/templates/components/progress_panel.html +27 -0
  33. ivoryos/routes/execute/templates/components/run_panel.html +9 -0
  34. ivoryos/routes/execute/templates/components/run_tabs.html +17 -0
  35. ivoryos/routes/execute/templates/components/tab_bayesian.html +398 -0
  36. ivoryos/routes/execute/templates/components/tab_configuration.html +98 -0
  37. ivoryos/routes/execute/templates/components/tab_repeat.html +14 -0
  38. ivoryos/routes/execute/templates/experiment_run.html +294 -0
  39. ivoryos/routes/library/templates/library.html +92 -0
  40. ivoryos/routes/main/templates/help.html +141 -0
  41. ivoryos/routes/main/templates/home.html +103 -0
  42. ivoryos/static/favicon.ico +0 -0
  43. ivoryos/static/gui_annotation/Slide1.png +0 -0
  44. ivoryos/static/gui_annotation/Slide2.PNG +0 -0
  45. ivoryos/static/js/action_handlers.js +213 -0
  46. ivoryos/static/js/db_delete.js +23 -0
  47. ivoryos/static/js/overlay.js +12 -0
  48. ivoryos/static/js/script_metadata.js +39 -0
  49. ivoryos/static/js/socket_handler.js +125 -0
  50. ivoryos/static/js/sortable_card.js +24 -0
  51. ivoryos/static/js/sortable_design.js +138 -0
  52. ivoryos/static/js/ui_state.js +114 -0
  53. ivoryos/static/logo.webp +0 -0
  54. ivoryos/static/style.css +211 -0
  55. ivoryos/templates/base.html +157 -0
  56. ivoryos/utils/form.py +6 -1
  57. ivoryos/utils/script_runner.py +46 -38
  58. ivoryos/version.py +1 -1
  59. {ivoryos-1.2.2.dist-info → ivoryos-1.2.4.dist-info}/METADATA +80 -119
  60. ivoryos-1.2.4.dist-info/RECORD +100 -0
  61. ivoryos-1.2.2.dist-info/RECORD +0 -47
  62. {ivoryos-1.2.2.dist-info → ivoryos-1.2.4.dist-info}/WHEEL +0 -0
  63. {ivoryos-1.2.2.dist-info → ivoryos-1.2.4.dist-info}/licenses/LICENSE +0 -0
  64. {ivoryos-1.2.2.dist-info → ivoryos-1.2.4.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ivoryos
3
- Version: 1.2.2
3
+ Version: 1.2.4
4
4
  Summary: an open-source Python package enabling Self-Driving Labs (SDLs) interoperability
5
5
  Author-email: Ivory Zhang <ivoryzhang@chem.ubc.ca>
6
6
  License: MIT
@@ -25,142 +25,121 @@ Dynamic: license-file
25
25
  [![Documentation Status](https://readthedocs.org/projects/ivoryos/badge/?version=latest)](https://ivoryos.readthedocs.io/en/latest/?badge=latest)
26
26
  [![PyPI version](https://img.shields.io/pypi/v/ivoryos)](https://pypi.org/project/ivoryos/)
27
27
  ![License](https://img.shields.io/pypi/l/ivoryos)
28
- [![YouTube](https://img.shields.io/badge/YouTube-video-red?logo=youtube)](https://youtu.be/dFfJv9I2-1g)
28
+ [![YouTube](https://img.shields.io/badge/YouTube-tutorial-red?logo=youtube)](https://youtu.be/dFfJv9I2-1g)
29
+ [![YouTube](https://img.shields.io/badge/YouTube-demo-red?logo=youtube)](https://youtu.be/flr5ydiE96s)
29
30
  [![Published](https://img.shields.io/badge/Nature_Comm.-paper-blue)](https://www.nature.com/articles/s41467-025-60514-w)
30
31
  [![Discord](https://img.shields.io/discord/1313641159356059770?label=Discord&logo=discord&color=5865F2)](https://discord.gg/AX5P9EdGVX)
31
32
 
32
33
  ![](https://gitlab.com/heingroup/ivoryos/raw/main/docs/source/_static/ivoryos.png)
33
34
  # ivoryOS: interoperable Web UI for self-driving laboratories (SDLs)
34
- "plug and play" web UI extension for flexible SDLs.
35
+ A **plug-and-play** web interface for flexible SDLs
36
+
37
+ ---
35
38
 
36
39
  ## Table of Contents
37
40
  - [Description](#description)
38
41
  - [System requirements](#system-requirements)
39
42
  - [Installation](#installation)
40
- - [Instructions for use](#instructions-for-use)
43
+ - [Quick Start](#quick-start)
44
+ - [Features](#features)
41
45
  - [Demo](#demo)
42
46
  - [Roadmap](#roadmap)
47
+ - [Acknowledgements](#acknowledgements)
43
48
 
44
-
49
+ ---
45
50
  ## Description
46
- Granting SDLs flexibility and modularity makes it almost impossible to design a UI, yet it's a necessity for allowing more people to interact with it (democratisation).
47
- This web UI aims to ease up the control of any Python-based SDLs by displaying functions and parameters for initialized modules dynamically.
48
- The modules can be hardware API, high-level functions, or experiment workflow.
49
- With the least modification of the current workflow, user can design, manage and execute their experimental designs and monitor the execution process.
50
-
51
- ## System requirements
52
- This software is developed and tested using Windows. This software and its dependencies are compatible across major platforms: Linux, macOS, and Windows. Some dependencies (Flask-SQLAlchemy) may require additional setup.
53
-
54
- ### Python Version
55
- Python >=3.10 for the best compatibility. Python >=3.7 without Ax.
56
- ### Python dependencies
57
- This software is compatible with the latest versions of all dependencies.
58
- - bcrypt~=4.0
59
- - Flask-Login~=0.6
60
- - Flask-Session~=0.8
61
- - Flask-SocketIO~=5.3
62
- - Flask-SQLAlchemy~=3.1
63
- - SQLAlchemy-Utils~=0.41
64
- - Flask-WTF~=1.2
65
- - python-dotenv==1.0.1
66
- - ax-platform (optional 1.0 for Python>=3.10)
67
- - baybe (optional)
51
+ Building UIs for SDLs is challenging because flexibility and modularity make them unpredictable yet accessibility is essential for **democratisation** of AI-driven scientific discovery.
52
+
53
+ **IvoryOS** bridges the gap by:
54
+ - Dynamically inspecting initialized Python modules (hardware APIs, high-level functions, or workflows)
55
+ - Automatically displaying functions and parameters in a web UI
56
+ - Allowing users to **design**, **manage**, and **execute** experimental workflows with minimal changes to existing scripts
57
+ - Providing natural language support for workflow design and execution, check [IvoryOS MCP](https://gitlab.com/heingroup/ivoryos-suite/ivoryos-mcp) for more details.
58
+
59
+ ----
60
+ ## System Requirements
61
+
62
+ **Platforms:** Compatible with Linux, macOS, and Windows (developed/tested on Windows).
63
+ **Python:**
64
+ - Recommended: Python ≥3.10
65
+ - Minimum: Python ≥3.7 (without Ax optimizer support)
66
+
67
+ **Core Dependencies:**
68
+ <details>
69
+ <summary>Click to expand</summary>
70
+
71
+ - bcrypt~=4.0
72
+ - Flask-Login~=0.6
73
+ - Flask-Session~=0.8
74
+ - Flask-SocketIO~=5.3
75
+ - Flask-SQLAlchemy~=3.1
76
+ - SQLAlchemy-Utils~=0.41
77
+ - Flask-WTF~=1.2
78
+ - python-dotenv==1.0.1
79
+
80
+ **Optional:**
81
+ - ax-platform (≥1.0, Python≥3.10)
82
+ - baybe
83
+ </details>
84
+
85
+ ---
68
86
 
69
87
 
70
88
  ## Installation
89
+ From PyPI:
71
90
  ```bash
72
91
  pip install ivoryos
73
92
  ```
74
- or
93
+ From source:
75
94
  ```bash
76
95
  git clone https://gitlab.com/heingroup/ivoryos.git
77
96
  cd ivoryos
78
- pip install .
97
+ pip install -e .
79
98
  ```
80
99
 
81
- The installation may take 10 to 30 seconds to install. The installation time may vary and take up to several minutes, depending on the network speed, computer performance, and virtual environment settings.
82
100
 
83
- ## Instructions for use
84
- ### Quick start
85
- In your SDL script, use `ivoryos(__name__)`.
101
+ ## Quick start
102
+ In your SDL script,
86
103
  ```python
87
104
  import ivoryos
88
105
 
89
106
  ivoryos.run(__name__)
90
107
  ```
91
- ### Login
92
- Create an account and login (local database with bcrypt password)
93
- ### Features
94
- - **Direct control**: direct function calling _Devices_ tab
95
- - **Workflows**:
108
+ Login: Create an account (local DB, bcrypt password)
109
+
110
+ ----
111
+ ## Features
112
+ ### Direct control:
113
+ direct function calling _Devices_ tab
114
+ ### Workflows
96
115
  - **Design Editor**: drag/add function to canvas in _Design_ tab. click `Compile and Run` button to go to the execution configuration page
97
116
  - **Execution Config**: configure iteration methods and parameters in _Compile/Run_ tab.
98
117
  - **Design Library**: manage workflow scripts in _Library_ tab.
99
118
  - **Workflow Data**: Execution records are in _Data_ tab.
119
+ ### Offline mode
120
+ after one successful connection, a blueprint will be automatically saved and made accessible without hardware connection. In a new Python script in the same directory, use `ivoryos.run()` to start offline mode.
100
121
 
101
- [//]: # (![Discord]&#40;https://img.shields.io/discord/1313641159356059770&#41;)
102
-
103
- [//]: # (![PyPI - Downloads]&#40;https://img.shields.io/pypi/dm/ivoryos&#41;)
104
-
105
-
106
- ### Additional settings
107
- [//]: # (#### AI assistant)
108
-
109
- [//]: # (To streamline the experimental design on SDLs, we also integrate Large Language Models &#40;LLMs&#41; to interpret the inspected functions and generate code according to task descriptions.)
110
-
111
- [//]: # ()
112
- [//]: # (#### Enable LLMs with [OpenAI API]&#40;https://github.com/openai/openai-python&#41;)
113
-
114
- [//]: # (1. Create a `.env` file for `OPENAI_API_KEY`)
115
-
116
- [//]: # (```)
117
-
118
- [//]: # (OPENAI_API_KEY="Your API Key")
119
-
120
- [//]: # (```)
121
-
122
- [//]: # (2. In your SDL script, define model, you can use any GPT models.)
123
-
124
- [//]: # ()
125
- [//]: # (```python)
126
-
127
- [//]: # (ivoryos.run&#40;__name__, model="gpt-3.5-turbo"&#41;)
128
122
 
129
- [//]: # (```)
130
123
 
131
- [//]: # ()
132
- [//]: # (#### Enable local LLMs with [Ollama]&#40;https://ollama.com/&#41;)
133
-
134
- [//]: # (1. Download Ollama.)
135
-
136
- [//]: # (2. pull models from Ollama)
137
-
138
- [//]: # (3. In your SDL script, define LLM server and model, you can use any models available on Ollama.)
139
-
140
- [//]: # ()
141
- [//]: # (```python)
142
-
143
- [//]: # (ivoryos.run&#40;__name__, llm_server="localhost", model="llama3.1"&#41;)
144
-
145
- [//]: # (```)
146
-
147
- #### Add additional logger(s)
124
+ ### Logging
125
+ Add single or multiple loggers:
148
126
  ```python
149
127
  ivoryos.run(__name__, logger="logger name")
150
- ```
151
- or
152
- ```python
153
128
  ivoryos.run(__name__, logger=["logger 1", "logger 2"])
154
129
  ```
155
- #### Offline (design without hardware connection)
156
- After one successful connection, a blueprint will be automatically saved and made accessible without hardware connection. In a new Python script in the same directory, use `ivoryos.run()` to start offline mode.
157
-
158
- ```python
159
- ivoryos.run()
160
- ```
130
+ ### Directory Structure
131
+
132
+ Created automatically on first run:
133
+ - **`ivoryos_data/`**:
134
+ - **`ivoryos_data/config_csv/`**: Batch configuration `csv`
135
+ - **`ivoryos_data/pseudo_deck/`**: Offline deck `.pkl`
136
+ - **`ivoryos_data/results/`**: Execution results
137
+ - **`ivoryos_data/scripts/`**: Compiled workflows Python scripts
138
+ - **`default.log`**: Application logs
139
+ - **`ivoryos.db`**: Local database
140
+ ---
161
141
  ## Demo
162
- In the [abstract_sdl.py](https://gitlab.com/heingroup/ivoryos/-/blob/main/example/abstract_sdl_example/abstract_sdl.py), where instances of `AbstractSDL` is created as `sdl`,
163
- addresses will be available on terminal.
142
+ In the [abstract_sdl.py](https://gitlab.com/heingroup/ivoryos/-/blob/main/example/abstract_sdl_example/abstract_sdl.py)
164
143
  ```Python
165
144
  ivoryos.run(__name__)
166
145
  ```
@@ -169,35 +148,19 @@ ivoryos.run(__name__)
169
148
  * Running on http://127.0.0.1:8000
170
149
  * Running on http://0.0.0.0:8000
171
150
 
172
- ### Deck function and web form
173
- ![](https://gitlab.com/heingroup/ivoryos/raw/main/docs/source/_static/demo.gif)
174
-
175
-
176
- ### Directory structure
177
-
178
- When you run the application for the first time, it will automatically create the following folders and files in the same directory:
179
-
180
- - **`ivoryos_data/`**: Main directory for application-related data.
181
- - **`ivoryos_data/config_csv/`**: Contains iteration configuration files in CSV format.
182
- - **`ivoryos_data/llm_output/`**: Stores raw prompt generated for the large language model.
183
- - **`ivoryos_data/pseudo_deck/`**: Contains pseudo-deck `.pkl` files for offline access.
184
- - **`ivoryos_data/results/`**: Used for storing results or outputs during workflow execution.
185
- - **`ivoryos_data/scripts/`**: Holds Python scripts compiled from the visual programming script design.
186
-
187
- - **`default.log`**: Log file that captures application logs.
188
- - **`ivoryos.db`**: Database file that stores application data locally.
189
-
151
+ ---
190
152
 
191
153
  ## Roadmap
192
154
 
193
155
  - [x] Allow plugin pages ✅
194
156
  - [x] pause, resume, abort current and pending workflows ✅
195
- - [x] dropdown input
196
- - [x] show line number option ✅
157
+ - [ ] dropdown input
197
158
  - [ ] snapshot version control
198
159
  - [ ] optimizer-agnostic
199
160
  - [ ] check batch-config file compatibility
200
161
 
162
+ ---
163
+
201
164
  ## Citing
202
165
 
203
166
  If you find this project useful, please consider citing the following manuscript:
@@ -233,8 +196,6 @@ For an additional perspective related to the development of the tool, please see
233
196
  url = {https://communities.springernature.com/posts/behind-ivoryos-empowering-scientists-to-harness-self-driving-labs-for-accelerated-discovery}
234
197
  }
235
198
  ```
236
-
237
- ## Authors and Acknowledgement
238
- Ivory Zhang, Lucy Hao
239
-
240
- Authors acknowledge Telescope Innovations, Hein Lab members for their valuable suggestions and contributions.
199
+ ---
200
+ ## Acknowledgements
201
+ Authors acknowledge Telescope Innovations Corp., Hein Lab members for their valuable suggestions and contributions.
@@ -0,0 +1,100 @@
1
+ ivoryos/__init__.py,sha256=BAA7OPl3h_QdSc4na-7OWTKhaOq1LtHOrJHX3gGITrc,9863
2
+ ivoryos/config.py,sha256=y3RxNjiIola9tK7jg-mHM8EzLMwiLwOzoisXkDvj0gA,2174
3
+ ivoryos/socket_handlers.py,sha256=VWVWiIdm4jYAutwGu6R0t1nK5MuMyOCL0xAnFn06jWQ,1302
4
+ ivoryos/version.py,sha256=XBKH8E1LmDxv06U39yqMBbXZapOERFgICEDYZs_kRso,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=BxCSyb9NHlm6SLi7iZITS-g4IyPyBK0ZVAeadPGG-Cw,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=XYsOcfGlduqLlqHySvPrRrR50CiAsml51duqneigsRY,3368
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=8GSEhfY3cE-q9QxGSW_u-9dFNO72N6QOSGwfYyPTfM0,21912
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=MdLMSAeaVXxnbcQfzHJximeJ6W7uOCxqTQhFSpsEieg,17065
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.4.dist-info/licenses/LICENSE,sha256=p2c8S8i-8YqMpZCJnadLz1-ofxnRMILzz6NCMIypRag,1084
97
+ ivoryos-1.2.4.dist-info/METADATA,sha256=V4lFZwkePsSRrYNShj0i2KM6u8_Z5F2omuHbYeAW5FU,7351
98
+ ivoryos-1.2.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
99
+ ivoryos-1.2.4.dist-info/top_level.txt,sha256=FRIWWdiEvRKqw-XfF_UK3XV0CrnNb6EmVbEgjaVazRM,8
100
+ ivoryos-1.2.4.dist-info/RECORD,,
@@ -1,47 +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=uuf4VNtTNA93fMhoAur9YafzaKJFnczY-H1SSCSuRVQ,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/control/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- ivoryos/routes/control/control.py,sha256=Vmy3GRZz8EbKmV9qslR8gsaYaYzb5HQTpukp42HfMow,5236
15
- ivoryos/routes/control/control_file.py,sha256=NIAzwhswvpl3u0mansy1ku-rPDybS5hVbmbnymOikWk,1548
16
- ivoryos/routes/control/control_new_device.py,sha256=mfJKg5JAOagIpUKbp2b5nRwvd2V3bzT3M0zIhIsEaFM,5456
17
- ivoryos/routes/control/utils.py,sha256=at11wA5HPAZN4BfMaymj1GKEvRTrqi4Wg6cTqUZJDjU,1155
18
- ivoryos/routes/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
- ivoryos/routes/data/data.py,sha256=AoqCaIAK0f9hstF1pxlJFeK_J-wKbMfXWGNDUbaBFFk,4218
20
- ivoryos/routes/design/__init__.py,sha256=zS3HXKaw0ALL5n6t_W1rUz5Uj5_tTQ-Y1VMXyzewvR0,113
21
- ivoryos/routes/design/design.py,sha256=F5X0Wa1sXSdolQ8w87wQBv6bN7jMwCnQ4jX8r4SkO24,17763
22
- ivoryos/routes/design/design_file.py,sha256=m4yku8fkpLUs4XvLJBqR5V-kyaGKbGB6ZoRxGbjEU5Q,2140
23
- ivoryos/routes/design/design_step.py,sha256=l8U3-FuXmap__sYm51AueKdbTaLCFaKjAz-j02b4g-E,5200
24
- ivoryos/routes/execute/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
- ivoryos/routes/execute/execute.py,sha256=hFnCvzO1OzR0XckCRzHfP_RZV70DtbH_p7kw1YhIe3o,12250
26
- ivoryos/routes/execute/execute_file.py,sha256=TelWYV295p4ZPhkUDJSVxfYROfVaKodEmDPTS2plQHI,2816
27
- ivoryos/routes/library/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
- ivoryos/routes/library/library.py,sha256=ZruIoaa06GlqpvJ383PSDEFdlPJFl2E2YI0H8aK7Hc0,5477
29
- ivoryos/routes/main/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
- ivoryos/routes/main/main.py,sha256=1AcSouCocHWjlpEED-ECn5OFiu0-3u0N-0st5RtKCVY,952
31
- ivoryos/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
- ivoryos/utils/bo_campaign.py,sha256=Fil-zT7JexL_p9XqyWByjAk42XB1R9XUKN8CdV5bi6c,9714
33
- ivoryos/utils/client_proxy.py,sha256=0OT2xTMkqh_2ybgCxMV_71ZVUThWwrsnAhTIBY5vDR8,2095
34
- ivoryos/utils/db_models.py,sha256=baE4LJcSGUj10Tj6imfINXi4JQX_4oLv_kb9bd0rp-M,27920
35
- ivoryos/utils/form.py,sha256=eIk1N77Ynxc4Omww5ZYlmpOIJfQPWto2qfiU6nzIIeQ,21755
36
- ivoryos/utils/global_config.py,sha256=zNO9GYhGn7El3msWoxJIm3S4Mzb3VMh2i5ZEsVtvb2Q,2463
37
- ivoryos/utils/llm_agent.py,sha256=-lVCkjPlpLues9sNTmaT7bT4sdhWvV2DiojNwzB2Lcw,6422
38
- ivoryos/utils/py_to_json.py,sha256=fyqjaxDHPh-sahgT6IHSn34ktwf6y51_x1qvhbNlH-U,7314
39
- ivoryos/utils/script_runner.py,sha256=g3_pLYcu6gF9sPjhW9WRlwMH7ScDpz_MqMJzxNayfyg,16725
40
- ivoryos/utils/serilize.py,sha256=lkBhkz8r2bLmz2_xOb0c4ptSSOqjIu6krj5YYK4Nvj8,6784
41
- ivoryos/utils/task_runner.py,sha256=cDIcmDaqYh0vXoYaL_kO877pluAo2tyfsHl9OgZqJJE,3029
42
- ivoryos/utils/utils.py,sha256=-WiU0_brszB9yDsiQepf_7SzNgPTSpul2RSKDOY3pqo,13921
43
- ivoryos-1.2.2.dist-info/licenses/LICENSE,sha256=p2c8S8i-8YqMpZCJnadLz1-ofxnRMILzz6NCMIypRag,1084
44
- ivoryos-1.2.2.dist-info/METADATA,sha256=vvueQx-kWo57d7AvBCDtUp28Ot_DBmgeTaZ6HVNS3ec,9416
45
- ivoryos-1.2.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
46
- ivoryos-1.2.2.dist-info/top_level.txt,sha256=FRIWWdiEvRKqw-XfF_UK3XV0CrnNb6EmVbEgjaVazRM,8
47
- ivoryos-1.2.2.dist-info/RECORD,,