ivoryos 1.3.2__tar.gz → 1.3.3__tar.gz

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 (109) hide show
  1. {ivoryos-1.3.2 → ivoryos-1.3.3}/PKG-INFO +1 -1
  2. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/utils/py_to_json.py +35 -6
  3. ivoryos-1.3.3/ivoryos/version.py +1 -0
  4. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos.egg-info/PKG-INFO +1 -1
  5. ivoryos-1.3.2/ivoryos/version.py +0 -1
  6. {ivoryos-1.3.2 → ivoryos-1.3.3}/LICENSE +0 -0
  7. {ivoryos-1.3.2 → ivoryos-1.3.3}/README.md +0 -0
  8. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/__init__.py +0 -0
  9. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/app.py +0 -0
  10. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/config.py +0 -0
  11. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/optimizer/ax_optimizer.py +0 -0
  12. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/optimizer/base_optimizer.py +0 -0
  13. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/optimizer/baybe_optimizer.py +0 -0
  14. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/optimizer/registry.py +0 -0
  15. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/__init__.py +0 -0
  16. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/api/api.py +0 -0
  17. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/auth/__init__.py +0 -0
  18. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/auth/auth.py +0 -0
  19. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/auth/templates/login.html +0 -0
  20. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/auth/templates/signup.html +0 -0
  21. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/control/__init__.py +0 -0
  22. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/control/control.py +0 -0
  23. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/control/control_file.py +0 -0
  24. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/control/control_new_device.py +0 -0
  25. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/control/templates/controllers.html +0 -0
  26. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/control/templates/controllers_new.html +0 -0
  27. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/control/utils.py +0 -0
  28. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/data/__init__.py +0 -0
  29. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/data/data.py +0 -0
  30. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/data/templates/components/step_card.html +0 -0
  31. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/data/templates/workflow_database.html +0 -0
  32. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/data/templates/workflow_view.html +0 -0
  33. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/design/__init__.py +0 -0
  34. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/design/design.py +0 -0
  35. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/design/design_file.py +0 -0
  36. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/design/design_step.py +0 -0
  37. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/design/templates/components/action_form.html +0 -0
  38. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/design/templates/components/actions_panel.html +0 -0
  39. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/design/templates/components/autofill_toggle.html +0 -0
  40. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/design/templates/components/canvas.html +0 -0
  41. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/design/templates/components/canvas_footer.html +0 -0
  42. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/design/templates/components/canvas_header.html +0 -0
  43. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/design/templates/components/canvas_main.html +0 -0
  44. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/design/templates/components/deck_selector.html +0 -0
  45. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/design/templates/components/edit_action_form.html +0 -0
  46. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/design/templates/components/instruments_panel.html +0 -0
  47. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/design/templates/components/modals/drop_modal.html +0 -0
  48. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/design/templates/components/modals/json_modal.html +0 -0
  49. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/design/templates/components/modals/new_script_modal.html +0 -0
  50. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/design/templates/components/modals/rename_modal.html +0 -0
  51. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/design/templates/components/modals/saveas_modal.html +0 -0
  52. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/design/templates/components/modals.html +0 -0
  53. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/design/templates/components/python_code_overlay.html +0 -0
  54. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/design/templates/components/sidebar.html +0 -0
  55. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/design/templates/components/text_to_code_panel.html +0 -0
  56. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/design/templates/experiment_builder.html +0 -0
  57. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/execute/__init__.py +0 -0
  58. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/execute/execute.py +0 -0
  59. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/execute/execute_file.py +0 -0
  60. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/execute/templates/components/error_modal.html +0 -0
  61. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/execute/templates/components/logging_panel.html +0 -0
  62. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/execute/templates/components/progress_panel.html +0 -0
  63. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/execute/templates/components/run_panel.html +0 -0
  64. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/execute/templates/components/run_tabs.html +0 -0
  65. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/execute/templates/components/tab_bayesian.html +0 -0
  66. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/execute/templates/components/tab_configuration.html +0 -0
  67. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/execute/templates/components/tab_repeat.html +0 -0
  68. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/execute/templates/experiment_run.html +0 -0
  69. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/library/__init__.py +0 -0
  70. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/library/library.py +0 -0
  71. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/library/templates/library.html +0 -0
  72. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/main/__init__.py +0 -0
  73. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/main/main.py +0 -0
  74. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/main/templates/help.html +0 -0
  75. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/routes/main/templates/home.html +0 -0
  76. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/server.py +0 -0
  77. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/socket_handlers.py +0 -0
  78. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/static/favicon.ico +0 -0
  79. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/static/gui_annotation/Slide1.png +0 -0
  80. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/static/gui_annotation/Slide2.PNG +0 -0
  81. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/static/js/action_handlers.js +0 -0
  82. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/static/js/db_delete.js +0 -0
  83. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/static/js/overlay.js +0 -0
  84. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/static/js/script_metadata.js +0 -0
  85. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/static/js/socket_handler.js +0 -0
  86. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/static/js/sortable_card.js +0 -0
  87. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/static/js/sortable_design.js +0 -0
  88. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/static/js/ui_state.js +0 -0
  89. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/static/logo.webp +0 -0
  90. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/static/style.css +0 -0
  91. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/templates/base.html +0 -0
  92. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/utils/__init__.py +0 -0
  93. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/utils/bo_campaign.py +0 -0
  94. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/utils/client_proxy.py +0 -0
  95. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/utils/db_models.py +0 -0
  96. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/utils/decorators.py +0 -0
  97. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/utils/form.py +0 -0
  98. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/utils/global_config.py +0 -0
  99. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/utils/llm_agent.py +0 -0
  100. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/utils/script_runner.py +0 -0
  101. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/utils/serilize.py +0 -0
  102. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/utils/task_runner.py +0 -0
  103. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos/utils/utils.py +0 -0
  104. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos.egg-info/SOURCES.txt +0 -0
  105. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos.egg-info/dependency_links.txt +0 -0
  106. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos.egg-info/requires.txt +0 -0
  107. {ivoryos-1.3.2 → ivoryos-1.3.3}/ivoryos.egg-info/top_level.txt +0 -0
  108. {ivoryos-1.3.2 → ivoryos-1.3.3}/pyproject.toml +0 -0
  109. {ivoryos-1.3.2 → ivoryos-1.3.3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ivoryos
3
- Version: 1.3.2
3
+ Version: 1.3.3
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
@@ -2,6 +2,20 @@ import ast
2
2
  import json
3
3
  import uuid
4
4
 
5
+
6
+ from ivoryos.utils.global_config import GlobalConfig
7
+
8
+ global_config = GlobalConfig()
9
+
10
+ if global_config.building_blocks:
11
+ building_blocks = {
12
+ inner_key: f"{block_key}.{inner_key}"
13
+ for block_key, block_value in global_config.building_blocks.items()
14
+ for inner_key in block_value.keys()
15
+ }
16
+ else:
17
+ building_blocks = {}
18
+
5
19
  def generate_uuid():
6
20
  return int(str(uuid.uuid4().int)[:15])
7
21
 
@@ -37,7 +51,7 @@ def convert_to_cards(source_code: str):
37
51
  def is_supported_assignment(node):
38
52
  return (
39
53
  isinstance(node.targets[0], ast.Name) and
40
- isinstance(node.value, (ast.Constant, ast.Num, ast.Str, ast.NameConstant))
54
+ isinstance(node.value, ast.Constant)
41
55
  )
42
56
 
43
57
  class CardVisitor(ast.NodeVisitor):
@@ -143,11 +157,22 @@ def convert_to_cards(source_code: str):
143
157
  f = f.value
144
158
  if isinstance(f, ast.Name):
145
159
  func_parts.insert(0, f.id)
146
- if not func_parts:
160
+
161
+ full_func_name = ".".join(func_parts)
162
+
163
+ # Check if this is a deck call or a building block
164
+ if full_func_name.startswith("deck.") or full_func_name.startswith("blocks."):
165
+ instrument = ".".join(func_parts[:-1])
166
+ action = func_parts[-1]
167
+ # not starting with deck or block, check if it's a decorated function
168
+ # ["general", "action"] or ["action"]
169
+ elif func_parts[-1] in building_blocks.keys():
170
+ instrument = building_blocks.get(func_parts[-1])
171
+ action = func_parts[-1]
172
+ else:
173
+ # ignore other calls
147
174
  return
148
175
 
149
- instrument = ".".join(func_parts[:-1])
150
- action = func_parts[-1]
151
176
 
152
177
 
153
178
  # --- special case for time.sleep ---
@@ -181,7 +206,7 @@ def convert_to_cards(source_code: str):
181
206
  for kw in node.keywords:
182
207
  if kw.arg is None and isinstance(kw.value, ast.Dict):
183
208
  for k_node, v_node in zip(kw.value.keys, kw.value.values):
184
- key = k_node.s if isinstance(k_node, ast.Constant) else ast.unparse(k_node)
209
+ key = k_node.value if isinstance(k_node, ast.Constant) else ast.unparse(k_node)
185
210
  if isinstance(v_node, ast.Constant):
186
211
  value = v_node.value
187
212
  elif isinstance(v_node, ast.Name):
@@ -242,10 +267,14 @@ if __name__ == "__main__":
242
267
  # Step 4: Analyze the sample
243
268
  analysis_results = deck.sdl.analyze(param_1=1, param_2=2)
244
269
 
270
+ # test block
271
+ result = blocks.general.test(**{'a': 1, 'b': 2})
272
+
245
273
  # Brief pause for system stability
246
274
  time.sleep(1.0)
247
275
 
248
276
  # Return only analysis results
249
277
  return {'analysis_results': analysis_results}
250
278
  '''
251
- print(json.dumps(convert_to_cards(test)))
279
+ from pprint import pprint
280
+ pprint(json.dumps(convert_to_cards(test)))
@@ -0,0 +1 @@
1
+ __version__ = "1.3.3"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ivoryos
3
- Version: 1.3.2
3
+ Version: 1.3.3
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
@@ -1 +0,0 @@
1
- __version__ = "1.3.2"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes