simstack 2.0.1__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.
Files changed (354) hide show
  1. simstack/__init__.py +0 -0
  2. simstack/_version.py +24 -0
  3. simstack/core/__init__.py +0 -0
  4. simstack/core/artifacts.py +406 -0
  5. simstack/core/asnyc_helper.py +14 -0
  6. simstack/core/config_file.py +60 -0
  7. simstack/core/context.py +283 -0
  8. simstack/core/definitions.py +22 -0
  9. simstack/core/engine.py +115 -0
  10. simstack/core/find_simstack_modules.py +41 -0
  11. simstack/core/hash.py +179 -0
  12. simstack/core/node.py +1137 -0
  13. simstack/core/node_claim.py +31 -0
  14. simstack/core/node_runner.py +362 -0
  15. simstack/core/process_results.py +102 -0
  16. simstack/core/recompute_artifacts.py +117 -0
  17. simstack/core/reset_db.py +12 -0
  18. simstack/core/resource_assignment.py +222 -0
  19. simstack/core/resources.py +90 -0
  20. simstack/core/route_table.py +24 -0
  21. simstack/core/run_docker.py +109 -0
  22. simstack/core/run_node.py +71 -0
  23. simstack/core/runner.py +169 -0
  24. simstack/core/services/__init__.py +11 -0
  25. simstack/core/services/base_service.py +191 -0
  26. simstack/core/services/file_transfer_service.py +117 -0
  27. simstack/core/services/git_restart_service.py +12 -0
  28. simstack/core/services/git_uv_update_service.py +105 -0
  29. simstack/core/services/node_execution_service.py +182 -0
  30. simstack/core/services/resource_branch_monitor_service.py +71 -0
  31. simstack/core/services/runner_cleanup_service.py +149 -0
  32. simstack/core/services/runner_manager.py +163 -0
  33. simstack/core/services/runner_status_service.py +10 -0
  34. simstack/core/services/slurm_status_service.py +67 -0
  35. simstack/core/services/stop_check_service.py +27 -0
  36. simstack/core/services/timeout_restart_service.py +26 -0
  37. simstack/core/simstack_result.py +39 -0
  38. simstack/core/submit_node.py +217 -0
  39. simstack/core/task_id.py +22 -0
  40. simstack/methods/__init__.py +0 -0
  41. simstack/methods/archive_files.py +292 -0
  42. simstack/methods/fire_and_forget_runner.py +113 -0
  43. simstack/methods/generate_test.py +125 -0
  44. simstack/methods/get_file.py +26 -0
  45. simstack/methods/mass_runner.py +154 -0
  46. simstack/methods/multiple_executor.py +307 -0
  47. simstack/methods/switch_git.py +16 -0
  48. simstack/methods/upload_helpers.py +81 -0
  49. simstack/models/__init__.py +74 -0
  50. simstack/models/array_list.py +21 -0
  51. simstack/models/array_storage.py +83 -0
  52. simstack/models/artifact_models.py +127 -0
  53. simstack/models/base_lists.py +51 -0
  54. simstack/models/base_types.py +209 -0
  55. simstack/models/charts_artifact.py +690 -0
  56. simstack/models/dataset.py +451 -0
  57. simstack/models/dataset_metadata.py +390 -0
  58. simstack/models/datasettuple.py +587 -0
  59. simstack/models/file_instance.py +150 -0
  60. simstack/models/file_list.py +45 -0
  61. simstack/models/files.py +424 -0
  62. simstack/models/fire_and_forget_result.py +19 -0
  63. simstack/models/images2d.py +113 -0
  64. simstack/models/log_entry_model.py +37 -0
  65. simstack/models/models.py +52 -0
  66. simstack/models/named_data_reference.py +36 -0
  67. simstack/models/node_registry.py +96 -0
  68. simstack/models/pandas_model.py +239 -0
  69. simstack/models/parameters.py +402 -0
  70. simstack/models/pickle_models.py +300 -0
  71. simstack/models/project.py +13 -0
  72. simstack/models/resource_assignment.py +170 -0
  73. simstack/models/resource_definition.py +125 -0
  74. simstack/models/runner_model.py +39 -0
  75. simstack/models/simple_table.py +79 -0
  76. simstack/models/simstack_model.py +97 -0
  77. simstack/models/slurm_info.py +17 -0
  78. simstack/models/table_artifact.py +87 -0
  79. simstack/models/tag.py +12 -0
  80. simstack/models/unused_test_file.py +5 -0
  81. simstack/simstack_marker.com +1 -0
  82. simstack/static/docs/.buildinfo +4 -0
  83. simstack/static/docs/_images/GUI Concept.webp +0 -0
  84. simstack/static/docs/_modules/index.html +434 -0
  85. simstack/static/docs/_modules/simstack/core/artifacts.html +743 -0
  86. simstack/static/docs/_modules/simstack/core/asnyc_helper.html +330 -0
  87. simstack/static/docs/_modules/simstack/core/config_file.html +379 -0
  88. simstack/static/docs/_modules/simstack/core/definitions.html +341 -0
  89. simstack/static/docs/_modules/simstack/core/engine.html +437 -0
  90. simstack/static/docs/_modules/simstack/core/find_simstack_modules.html +360 -0
  91. simstack/static/docs/_modules/simstack/core/hash.html +528 -0
  92. simstack/static/docs/_modules/simstack/core/node.html +1392 -0
  93. simstack/static/docs/_modules/simstack/core/node_claim.html +347 -0
  94. simstack/static/docs/_modules/simstack/core/node_runner.html +711 -0
  95. simstack/static/docs/_modules/simstack/core/process_results.html +418 -0
  96. simstack/static/docs/_modules/simstack/core/recompute_artifacts.html +433 -0
  97. simstack/static/docs/_modules/simstack/core/reset_db.html +328 -0
  98. simstack/static/docs/_modules/simstack/core/resource_assignment.html +553 -0
  99. simstack/static/docs/_modules/simstack/core/resources.html +424 -0
  100. simstack/static/docs/_modules/simstack/core/route_table.html +349 -0
  101. simstack/static/docs/_modules/simstack/core/run_docker.html +425 -0
  102. simstack/static/docs/_modules/simstack/core/run_node.html +390 -0
  103. simstack/static/docs/_modules/simstack/core/runner.html +491 -0
  104. simstack/static/docs/_modules/simstack/core/services/base_service.html +522 -0
  105. simstack/static/docs/_modules/simstack/core/services/file_transfer_service.html +436 -0
  106. simstack/static/docs/_modules/simstack/core/services/git_restart_service.html +331 -0
  107. simstack/static/docs/_modules/simstack/core/services/git_uv_update_service.html +427 -0
  108. simstack/static/docs/_modules/simstack/core/services/node_execution_service.html +507 -0
  109. simstack/static/docs/_modules/simstack/core/services/resource_branch_monitor_service.html +390 -0
  110. simstack/static/docs/_modules/simstack/core/services/runner_cleanup_service.html +468 -0
  111. simstack/static/docs/_modules/simstack/core/services/runner_manager.html +485 -0
  112. simstack/static/docs/_modules/simstack/core/services/runner_status_service.html +329 -0
  113. simstack/static/docs/_modules/simstack/core/services/slurm_status_service.html +386 -0
  114. simstack/static/docs/_modules/simstack/core/services/stop_check_service.html +346 -0
  115. simstack/static/docs/_modules/simstack/core/services/timeout_restart_service.html +345 -0
  116. simstack/static/docs/_modules/simstack/core/simstack_result.html +355 -0
  117. simstack/static/docs/_modules/simstack/core/submit_node.html +536 -0
  118. simstack/static/docs/_modules/simstack/core/task_id.html +344 -0
  119. simstack/static/docs/_modules/simstack/methods/archive_files.html +598 -0
  120. simstack/static/docs/_modules/simstack/methods/fire_and_forget_runner.html +432 -0
  121. simstack/static/docs/_modules/simstack/methods/generate_test.html +443 -0
  122. simstack/static/docs/_modules/simstack/methods/get_file.html +342 -0
  123. simstack/static/docs/_modules/simstack/methods/mass_runner.html +476 -0
  124. simstack/static/docs/_modules/simstack/methods/multiple_executor.html +674 -0
  125. simstack/static/docs/_modules/simstack/methods/switch_git.html +332 -0
  126. simstack/static/docs/_modules/simstack/methods/upload_helpers.html +403 -0
  127. simstack/static/docs/_modules/simstack/models/array_list.html +337 -0
  128. simstack/static/docs/_modules/simstack/models/array_storage.html +417 -0
  129. simstack/static/docs/_modules/simstack/models/base_lists.html +374 -0
  130. simstack/static/docs/_modules/simstack/models/base_types.html +588 -0
  131. simstack/static/docs/_modules/simstack/models/charts_artifact.html +1035 -0
  132. simstack/static/docs/_modules/simstack/models/dataset.html +866 -0
  133. simstack/static/docs/_modules/simstack/models/dataset_metadata.html +711 -0
  134. simstack/static/docs/_modules/simstack/models/datasettuple.html +1005 -0
  135. simstack/static/docs/_modules/simstack/models/file_instance.html +472 -0
  136. simstack/static/docs/_modules/simstack/models/file_list.html +367 -0
  137. simstack/static/docs/_modules/simstack/models/files.html +773 -0
  138. simstack/static/docs/_modules/simstack/models/fire_and_forget_result.html +335 -0
  139. simstack/static/docs/_modules/simstack/models/images2d.html +447 -0
  140. simstack/static/docs/_modules/simstack/models/log_entry_model.html +356 -0
  141. simstack/static/docs/_modules/simstack/models/models.html +374 -0
  142. simstack/static/docs/_modules/simstack/models/named_data_reference.html +355 -0
  143. simstack/static/docs/_modules/simstack/models/node_registry.html +415 -0
  144. simstack/static/docs/_modules/simstack/models/pandas_model.html +570 -0
  145. simstack/static/docs/_modules/simstack/models/parameters.html +739 -0
  146. simstack/static/docs/_modules/simstack/models/pickle_models.html +631 -0
  147. simstack/static/docs/_modules/simstack/models/project.html +329 -0
  148. simstack/static/docs/_modules/simstack/models/resource_assignment.html +501 -0
  149. simstack/static/docs/_modules/simstack/models/resource_definition.html +477 -0
  150. simstack/static/docs/_modules/simstack/models/runner_model.html +361 -0
  151. simstack/static/docs/_modules/simstack/models/simple_table.html +413 -0
  152. simstack/static/docs/_modules/simstack/models/simstack_model.html +416 -0
  153. simstack/static/docs/_modules/simstack/models/slurm_info.html +333 -0
  154. simstack/static/docs/_modules/simstack/models/table_artifact.html +406 -0
  155. simstack/static/docs/_modules/simstack/models/tag.html +328 -0
  156. simstack/static/docs/_modules/simstack/tables/model_table.html +519 -0
  157. simstack/static/docs/_modules/simstack/tables/node_children.html +538 -0
  158. simstack/static/docs/_modules/simstack/tables/node_table.html +854 -0
  159. simstack/static/docs/_modules/simstack/tables/table_builder.html +642 -0
  160. simstack/static/docs/_modules/simstack/util/async_zip_utils.html +337 -0
  161. simstack/static/docs/_modules/simstack/util/b64mixin.html +339 -0
  162. simstack/static/docs/_modules/simstack/util/cleaned_json_schema.html +336 -0
  163. simstack/static/docs/_modules/simstack/util/config_reader.html +498 -0
  164. simstack/static/docs/_modules/simstack/util/custom_model_dump.html +391 -0
  165. simstack/static/docs/_modules/simstack/util/database_information.html +488 -0
  166. simstack/static/docs/_modules/simstack/util/db.html +1392 -0
  167. simstack/static/docs/_modules/simstack/util/db_logger.html +448 -0
  168. simstack/static/docs/_modules/simstack/util/default_from_dict.html +376 -0
  169. simstack/static/docs/_modules/simstack/util/directory_iterator.html +553 -0
  170. simstack/static/docs/_modules/simstack/util/docstring_parser.html +526 -0
  171. simstack/static/docs/_modules/simstack/util/file_hashing.html +394 -0
  172. simstack/static/docs/_modules/simstack/util/file_transfer_client.html +791 -0
  173. simstack/static/docs/_modules/simstack/util/files.html +733 -0
  174. simstack/static/docs/_modules/simstack/util/find_python_files.html +349 -0
  175. simstack/static/docs/_modules/simstack/util/generate_ui_schema.html +396 -0
  176. simstack/static/docs/_modules/simstack/util/generic_list_mixin.html +487 -0
  177. simstack/static/docs/_modules/simstack/util/get_module_path.html +336 -0
  178. simstack/static/docs/_modules/simstack/util/git_pull.html +381 -0
  179. simstack/static/docs/_modules/simstack/util/git_repository_status.html +411 -0
  180. simstack/static/docs/_modules/simstack/util/import_module.html +377 -0
  181. simstack/static/docs/_modules/simstack/util/importer.html +637 -0
  182. simstack/static/docs/_modules/simstack/util/init_data_source.html +357 -0
  183. simstack/static/docs/_modules/simstack/util/make_graph.html +423 -0
  184. simstack/static/docs/_modules/simstack/util/make_table.html +1171 -0
  185. simstack/static/docs/_modules/simstack/util/mappings.html +378 -0
  186. simstack/static/docs/_modules/simstack/util/minimal_route_finder.html +388 -0
  187. simstack/static/docs/_modules/simstack/util/mock_db.html +472 -0
  188. simstack/static/docs/_modules/simstack/util/module_path_checker.html +354 -0
  189. simstack/static/docs/_modules/simstack/util/object_list_mixin.html +649 -0
  190. simstack/static/docs/_modules/simstack/util/path_manager.html +566 -0
  191. simstack/static/docs/_modules/simstack/util/project_root_finder.html +357 -0
  192. simstack/static/docs/_modules/simstack/util/queue_watcher.html +593 -0
  193. simstack/static/docs/_modules/simstack/util/resource_config.html +532 -0
  194. simstack/static/docs/_modules/simstack/util/route_finder.html +390 -0
  195. simstack/static/docs/_modules/simstack/util/runner_util.html +487 -0
  196. simstack/static/docs/_modules/simstack/util/runner_utils.html +468 -0
  197. simstack/static/docs/_modules/simstack/util/safe_code_executor.html +510 -0
  198. simstack/static/docs/_modules/simstack/util/sample_config.html +414 -0
  199. simstack/static/docs/_modules/simstack/util/sensitive_content_filter.html +364 -0
  200. simstack/static/docs/_modules/simstack/util/setup_logging.html +365 -0
  201. simstack/static/docs/_modules/simstack/util/submit_to_watchdog.html +425 -0
  202. simstack/static/docs/_modules/simstack/util/toml_reader.html +482 -0
  203. simstack/static/docs/_modules/simstack/util/transform_file_name.html +357 -0
  204. simstack/static/docs/_modules/simstack/util/ui_tools.html +541 -0
  205. simstack/static/docs/_sources/architecture.rst.txt +25 -0
  206. simstack/static/docs/_sources/array_lists.rst.txt +60 -0
  207. simstack/static/docs/_sources/ci_pipeline.rst.txt +34 -0
  208. simstack/static/docs/_sources/data.rst.txt +175 -0
  209. simstack/static/docs/_sources/database_migrations.rst.txt +310 -0
  210. simstack/static/docs/_sources/datasets.rst.txt +93 -0
  211. simstack/static/docs/_sources/developer_guide.rst.txt +25 -0
  212. simstack/static/docs/_sources/docker_nodes.rst.txt +149 -0
  213. simstack/static/docs/_sources/files.rst.txt +159 -0
  214. simstack/static/docs/_sources/fire_and_forget_runner.rst.txt +67 -0
  215. simstack/static/docs/_sources/index.rst.txt +25 -0
  216. simstack/static/docs/_sources/installation.rst.txt +213 -0
  217. simstack/static/docs/_sources/lists.rst.txt +111 -0
  218. simstack/static/docs/_sources/mass_runner.rst.txt +91 -0
  219. simstack/static/docs/_sources/misc.rst.txt +106 -0
  220. simstack/static/docs/_sources/overview.rst.txt +91 -0
  221. simstack/static/docs/_sources/recovery.rst.txt +38 -0
  222. simstack/static/docs/_sources/resource_config.rst.txt +141 -0
  223. simstack/static/docs/_sources/simstack/modules/modules.rst.txt +7 -0
  224. simstack/static/docs/_sources/simstack/modules/simstack.core.rst.txt +205 -0
  225. simstack/static/docs/_sources/simstack/modules/simstack.core.services.rst.txt +109 -0
  226. simstack/static/docs/_sources/simstack/modules/simstack.methods.rst.txt +77 -0
  227. simstack/static/docs/_sources/simstack/modules/simstack.models.rst.txt +261 -0
  228. simstack/static/docs/_sources/simstack/modules/simstack.rst.txt +22 -0
  229. simstack/static/docs/_sources/simstack/modules/simstack.tables.rst.txt +45 -0
  230. simstack/static/docs/_sources/simstack/modules/simstack.util.rst.txt +381 -0
  231. simstack/static/docs/_sources/submit.rst.txt +141 -0
  232. simstack/static/docs/_sources/tables.rst.txt +50 -0
  233. simstack/static/docs/_sources/testing_complex_nodes.rst.txt +92 -0
  234. simstack/static/docs/_sources/ui_documentation.rst.txt +272 -0
  235. simstack/static/docs/_sources/workflows.rst.txt +446 -0
  236. simstack/static/docs/_static/base-stemmer.js +476 -0
  237. simstack/static/docs/_static/basic.css +906 -0
  238. simstack/static/docs/_static/cobalt2-theme.css +1 -0
  239. simstack/static/docs/_static/debug.css +69 -0
  240. simstack/static/docs/_static/docs-build-badge.css +51 -0
  241. simstack/static/docs/_static/docs-build-badge.js +51 -0
  242. simstack/static/docs/_static/doctools.js +150 -0
  243. simstack/static/docs/_static/documentation_options.js +13 -0
  244. simstack/static/docs/_static/english-stemmer.js +1066 -0
  245. simstack/static/docs/_static/file.png +0 -0
  246. simstack/static/docs/_static/language_data.js +13 -0
  247. simstack/static/docs/_static/minus.png +0 -0
  248. simstack/static/docs/_static/plus.png +0 -0
  249. simstack/static/docs/_static/pygments.css +250 -0
  250. simstack/static/docs/_static/scripts/furo-extensions.js +0 -0
  251. simstack/static/docs/_static/scripts/furo.js +3 -0
  252. simstack/static/docs/_static/scripts/furo.js.LICENSE.txt +7 -0
  253. simstack/static/docs/_static/scripts/furo.js.map +1 -0
  254. simstack/static/docs/_static/searchtools.js +693 -0
  255. simstack/static/docs/_static/skeleton.css +296 -0
  256. simstack/static/docs/_static/sphinx_highlight.js +159 -0
  257. simstack/static/docs/_static/styles/furo-extensions.css +2 -0
  258. simstack/static/docs/_static/styles/furo-extensions.css.map +1 -0
  259. simstack/static/docs/_static/styles/furo.css +2 -0
  260. simstack/static/docs/_static/styles/furo.css.map +1 -0
  261. simstack/static/docs/architecture.html +340 -0
  262. simstack/static/docs/array_lists.html +678 -0
  263. simstack/static/docs/ci_pipeline.html +385 -0
  264. simstack/static/docs/data.html +545 -0
  265. simstack/static/docs/database_migrations.html +652 -0
  266. simstack/static/docs/datasets.html +1268 -0
  267. simstack/static/docs/developer_guide.html +359 -0
  268. simstack/static/docs/docker_nodes.html +503 -0
  269. simstack/static/docs/files.html +718 -0
  270. simstack/static/docs/fire_and_forget_runner.html +641 -0
  271. simstack/static/docs/genindex.html +6390 -0
  272. simstack/static/docs/index.html +516 -0
  273. simstack/static/docs/installation.html +553 -0
  274. simstack/static/docs/lists.html +478 -0
  275. simstack/static/docs/mass_runner.html +481 -0
  276. simstack/static/docs/misc.html +454 -0
  277. simstack/static/docs/objects.inv +0 -0
  278. simstack/static/docs/overview.html +469 -0
  279. simstack/static/docs/py-modindex.html +1111 -0
  280. simstack/static/docs/recovery.html +371 -0
  281. simstack/static/docs/resource_config.html +590 -0
  282. simstack/static/docs/search.html +327 -0
  283. simstack/static/docs/searchindex.js +1 -0
  284. simstack/static/docs/simstack/modules/modules.html +489 -0
  285. simstack/static/docs/simstack/modules/simstack.core.html +1883 -0
  286. simstack/static/docs/simstack/modules/simstack.core.services.html +698 -0
  287. simstack/static/docs/simstack/modules/simstack.html +3060 -0
  288. simstack/static/docs/simstack/modules/simstack.methods.html +1150 -0
  289. simstack/static/docs/simstack/modules/simstack.models.html +13113 -0
  290. simstack/static/docs/simstack/modules/simstack.tables.html +635 -0
  291. simstack/static/docs/simstack/modules/simstack.util.html +3320 -0
  292. simstack/static/docs/submit.html +487 -0
  293. simstack/static/docs/tables.html +539 -0
  294. simstack/static/docs/testing_complex_nodes.html +458 -0
  295. simstack/static/docs/ui_documentation.html +788 -0
  296. simstack/static/docs/workflows.html +766 -0
  297. simstack/tables/__init__.py +0 -0
  298. simstack/tables/model_table.py +191 -0
  299. simstack/tables/node_children.py +219 -0
  300. simstack/tables/node_table.py +517 -0
  301. simstack/tables/table_builder.py +314 -0
  302. simstack/util/__init__.py +0 -0
  303. simstack/util/async_zip_utils.py +18 -0
  304. simstack/util/b64mixin.py +23 -0
  305. simstack/util/cleaned_json_schema.py +20 -0
  306. simstack/util/config_reader.py +179 -0
  307. simstack/util/custom_model_dump.py +75 -0
  308. simstack/util/database_information.py +160 -0
  309. simstack/util/db.py +1013 -0
  310. simstack/util/db_logger.py +117 -0
  311. simstack/util/default_from_dict.py +57 -0
  312. simstack/util/directory_iterator.py +216 -0
  313. simstack/util/docstring_parser.py +186 -0
  314. simstack/util/file_hashing.py +72 -0
  315. simstack/util/file_transfer_client.py +427 -0
  316. simstack/util/files.py +396 -0
  317. simstack/util/find_python_files.py +33 -0
  318. simstack/util/generate_ui_schema.py +80 -0
  319. simstack/util/generic_list_mixin.py +120 -0
  320. simstack/util/geometry_utils.py +118 -0
  321. simstack/util/get_module_path.py +20 -0
  322. simstack/util/git_pull.py +65 -0
  323. simstack/util/git_repository_status.py +95 -0
  324. simstack/util/import_module.py +63 -0
  325. simstack/util/importer.py +312 -0
  326. simstack/util/init_data_source.py +41 -0
  327. simstack/util/make_graph.py +107 -0
  328. simstack/util/make_table.py +837 -0
  329. simstack/util/mappings.py +41 -0
  330. simstack/util/minimal_route_finder.py +72 -0
  331. simstack/util/mock_db.py +144 -0
  332. simstack/util/module_path_checker.py +38 -0
  333. simstack/util/object_list_mixin.py +282 -0
  334. simstack/util/path_manager.py +223 -0
  335. simstack/util/project_root_finder.py +41 -0
  336. simstack/util/queue_watcher.py +262 -0
  337. simstack/util/resource_config.py +198 -0
  338. simstack/util/route_finder.py +74 -0
  339. simstack/util/runner_util.py +166 -0
  340. simstack/util/runner_utils.py +143 -0
  341. simstack/util/safe_code_executor.py +194 -0
  342. simstack/util/sample_config.py +98 -0
  343. simstack/util/sensitive_content_filter.py +48 -0
  344. simstack/util/setup_logging.py +49 -0
  345. simstack/util/submit_to_watchdog.py +106 -0
  346. simstack/util/toml_reader.py +142 -0
  347. simstack/util/transform_file_name.py +41 -0
  348. simstack/util/ui_tools.py +213 -0
  349. simstack-2.0.1.dist-info/METADATA +454 -0
  350. simstack-2.0.1.dist-info/RECORD +354 -0
  351. simstack-2.0.1.dist-info/WHEEL +5 -0
  352. simstack-2.0.1.dist-info/entry_points.txt +12 -0
  353. simstack-2.0.1.dist-info/licenses/LICENSE +21 -0
  354. simstack-2.0.1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,381 @@
1
+ simstack.util package
2
+ =====================
3
+
4
+ Submodules
5
+ ----------
6
+
7
+ simstack.util.async\_zip\_utils module
8
+ --------------------------------------
9
+
10
+ .. automodule:: simstack.util.async_zip_utils
11
+ :members:
12
+ :show-inheritance:
13
+ :undoc-members:
14
+
15
+ simstack.util.b64mixin module
16
+ -----------------------------
17
+
18
+ .. automodule:: simstack.util.b64mixin
19
+ :members:
20
+ :show-inheritance:
21
+ :undoc-members:
22
+
23
+ simstack.util.cleaned\_json\_schema module
24
+ ------------------------------------------
25
+
26
+ .. automodule:: simstack.util.cleaned_json_schema
27
+ :members:
28
+ :show-inheritance:
29
+ :undoc-members:
30
+
31
+ simstack.util.config\_reader module
32
+ -----------------------------------
33
+
34
+ .. automodule:: simstack.util.config_reader
35
+ :members:
36
+ :show-inheritance:
37
+ :undoc-members:
38
+
39
+ simstack.util.custom\_model\_dump module
40
+ ----------------------------------------
41
+
42
+ .. automodule:: simstack.util.custom_model_dump
43
+ :members:
44
+ :show-inheritance:
45
+ :undoc-members:
46
+
47
+ simstack.util.database\_information module
48
+ ------------------------------------------
49
+
50
+ .. automodule:: simstack.util.database_information
51
+ :members:
52
+ :show-inheritance:
53
+ :undoc-members:
54
+
55
+ simstack.util.db module
56
+ -----------------------
57
+
58
+ .. automodule:: simstack.util.db
59
+ :members:
60
+ :show-inheritance:
61
+ :undoc-members:
62
+
63
+ simstack.util.db\_logger module
64
+ -------------------------------
65
+
66
+ .. automodule:: simstack.util.db_logger
67
+ :members:
68
+ :show-inheritance:
69
+ :undoc-members:
70
+
71
+ simstack.util.default\_from\_dict module
72
+ ----------------------------------------
73
+
74
+ .. automodule:: simstack.util.default_from_dict
75
+ :members:
76
+ :show-inheritance:
77
+ :undoc-members:
78
+
79
+ simstack.util.directory\_iterator module
80
+ ----------------------------------------
81
+
82
+ .. automodule:: simstack.util.directory_iterator
83
+ :members:
84
+ :show-inheritance:
85
+ :undoc-members:
86
+
87
+ simstack.util.docstring\_parser module
88
+ --------------------------------------
89
+
90
+ .. automodule:: simstack.util.docstring_parser
91
+ :members:
92
+ :show-inheritance:
93
+ :undoc-members:
94
+
95
+ simstack.util.file\_hashing module
96
+ ----------------------------------
97
+
98
+ .. automodule:: simstack.util.file_hashing
99
+ :members:
100
+ :show-inheritance:
101
+ :undoc-members:
102
+
103
+ simstack.util.file\_transfer\_client module
104
+ -------------------------------------------
105
+
106
+ .. automodule:: simstack.util.file_transfer_client
107
+ :members:
108
+ :show-inheritance:
109
+ :undoc-members:
110
+
111
+ simstack.util.files module
112
+ --------------------------
113
+
114
+ .. automodule:: simstack.util.files
115
+ :members:
116
+ :show-inheritance:
117
+ :undoc-members:
118
+
119
+ simstack.util.find\_python\_files module
120
+ ----------------------------------------
121
+
122
+ .. automodule:: simstack.util.find_python_files
123
+ :members:
124
+ :show-inheritance:
125
+ :undoc-members:
126
+
127
+ simstack.util.generate\_ui\_schema module
128
+ -----------------------------------------
129
+
130
+ .. automodule:: simstack.util.generate_ui_schema
131
+ :members:
132
+ :show-inheritance:
133
+ :undoc-members:
134
+
135
+ simstack.util.generic\_list\_mixin module
136
+ -----------------------------------------
137
+
138
+ .. automodule:: simstack.util.generic_list_mixin
139
+ :members:
140
+ :show-inheritance:
141
+ :undoc-members:
142
+
143
+ simstack.util.geometry\_utils module
144
+ ------------------------------------
145
+
146
+ .. automodule:: simstack.util.geometry_utils
147
+ :members:
148
+ :show-inheritance:
149
+ :undoc-members:
150
+
151
+ simstack.util.get\_module\_path module
152
+ --------------------------------------
153
+
154
+ .. automodule:: simstack.util.get_module_path
155
+ :members:
156
+ :show-inheritance:
157
+ :undoc-members:
158
+
159
+ simstack.util.git\_pull module
160
+ ------------------------------
161
+
162
+ .. automodule:: simstack.util.git_pull
163
+ :members:
164
+ :show-inheritance:
165
+ :undoc-members:
166
+
167
+ simstack.util.git\_repository\_status module
168
+ --------------------------------------------
169
+
170
+ .. automodule:: simstack.util.git_repository_status
171
+ :members:
172
+ :show-inheritance:
173
+ :undoc-members:
174
+
175
+ simstack.util.import\_module module
176
+ -----------------------------------
177
+
178
+ .. automodule:: simstack.util.import_module
179
+ :members:
180
+ :show-inheritance:
181
+ :undoc-members:
182
+
183
+ simstack.util.importer module
184
+ -----------------------------
185
+
186
+ .. automodule:: simstack.util.importer
187
+ :members:
188
+ :show-inheritance:
189
+ :undoc-members:
190
+
191
+ simstack.util.init\_data\_source module
192
+ ---------------------------------------
193
+
194
+ .. automodule:: simstack.util.init_data_source
195
+ :members:
196
+ :show-inheritance:
197
+ :undoc-members:
198
+
199
+ simstack.util.make\_graph module
200
+ --------------------------------
201
+
202
+ .. automodule:: simstack.util.make_graph
203
+ :members:
204
+ :show-inheritance:
205
+ :undoc-members:
206
+
207
+ simstack.util.make\_table module
208
+ --------------------------------
209
+
210
+ .. automodule:: simstack.util.make_table
211
+ :members:
212
+ :show-inheritance:
213
+ :undoc-members:
214
+
215
+ simstack.util.mappings module
216
+ -----------------------------
217
+
218
+ .. automodule:: simstack.util.mappings
219
+ :members:
220
+ :show-inheritance:
221
+ :undoc-members:
222
+
223
+ simstack.util.minimal\_route\_finder module
224
+ -------------------------------------------
225
+
226
+ .. automodule:: simstack.util.minimal_route_finder
227
+ :members:
228
+ :show-inheritance:
229
+ :undoc-members:
230
+
231
+ simstack.util.mock\_db module
232
+ -----------------------------
233
+
234
+ .. automodule:: simstack.util.mock_db
235
+ :members:
236
+ :show-inheritance:
237
+ :undoc-members:
238
+
239
+ simstack.util.module\_path\_checker module
240
+ ------------------------------------------
241
+
242
+ .. automodule:: simstack.util.module_path_checker
243
+ :members:
244
+ :show-inheritance:
245
+ :undoc-members:
246
+
247
+ simstack.util.object\_list\_mixin module
248
+ ----------------------------------------
249
+
250
+ .. automodule:: simstack.util.object_list_mixin
251
+ :members:
252
+ :show-inheritance:
253
+ :undoc-members:
254
+
255
+ simstack.util.path\_manager module
256
+ ----------------------------------
257
+
258
+ .. automodule:: simstack.util.path_manager
259
+ :members:
260
+ :show-inheritance:
261
+ :undoc-members:
262
+
263
+ simstack.util.project\_root\_finder module
264
+ ------------------------------------------
265
+
266
+ .. automodule:: simstack.util.project_root_finder
267
+ :members:
268
+ :show-inheritance:
269
+ :undoc-members:
270
+
271
+ simstack.util.queue\_watcher module
272
+ -----------------------------------
273
+
274
+ .. automodule:: simstack.util.queue_watcher
275
+ :members:
276
+ :show-inheritance:
277
+ :undoc-members:
278
+
279
+ simstack.util.resource\_config module
280
+ -------------------------------------
281
+
282
+ .. automodule:: simstack.util.resource_config
283
+ :members:
284
+ :show-inheritance:
285
+ :undoc-members:
286
+
287
+ simstack.util.route\_finder module
288
+ ----------------------------------
289
+
290
+ .. automodule:: simstack.util.route_finder
291
+ :members:
292
+ :show-inheritance:
293
+ :undoc-members:
294
+
295
+ simstack.util.runner\_util module
296
+ ---------------------------------
297
+
298
+ .. automodule:: simstack.util.runner_util
299
+ :members:
300
+ :show-inheritance:
301
+ :undoc-members:
302
+
303
+ simstack.util.runner\_utils module
304
+ ----------------------------------
305
+
306
+ .. automodule:: simstack.util.runner_utils
307
+ :members:
308
+ :show-inheritance:
309
+ :undoc-members:
310
+
311
+ simstack.util.safe\_code\_executor module
312
+ -----------------------------------------
313
+
314
+ .. automodule:: simstack.util.safe_code_executor
315
+ :members:
316
+ :show-inheritance:
317
+ :undoc-members:
318
+
319
+ simstack.util.sample\_config module
320
+ -----------------------------------
321
+
322
+ .. automodule:: simstack.util.sample_config
323
+ :members:
324
+ :show-inheritance:
325
+ :undoc-members:
326
+
327
+ simstack.util.sensitive\_content\_filter module
328
+ -----------------------------------------------
329
+
330
+ .. automodule:: simstack.util.sensitive_content_filter
331
+ :members:
332
+ :show-inheritance:
333
+ :undoc-members:
334
+
335
+ simstack.util.setup\_logging module
336
+ -----------------------------------
337
+
338
+ .. automodule:: simstack.util.setup_logging
339
+ :members:
340
+ :show-inheritance:
341
+ :undoc-members:
342
+
343
+ simstack.util.submit\_to\_watchdog module
344
+ -----------------------------------------
345
+
346
+ .. automodule:: simstack.util.submit_to_watchdog
347
+ :members:
348
+ :show-inheritance:
349
+ :undoc-members:
350
+
351
+ simstack.util.toml\_reader module
352
+ ---------------------------------
353
+
354
+ .. automodule:: simstack.util.toml_reader
355
+ :members:
356
+ :show-inheritance:
357
+ :undoc-members:
358
+
359
+ simstack.util.transform\_file\_name module
360
+ ------------------------------------------
361
+
362
+ .. automodule:: simstack.util.transform_file_name
363
+ :members:
364
+ :show-inheritance:
365
+ :undoc-members:
366
+
367
+ simstack.util.ui\_tools module
368
+ ------------------------------
369
+
370
+ .. automodule:: simstack.util.ui_tools
371
+ :members:
372
+ :show-inheritance:
373
+ :undoc-members:
374
+
375
+ Module contents
376
+ ---------------
377
+
378
+ .. automodule:: simstack.util
379
+ :members:
380
+ :show-inheritance:
381
+ :undoc-members:
@@ -0,0 +1,141 @@
1
+
2
+ Submitting New Workflows
3
+ ------------------------
4
+
5
+ The Submit Panel is the main interface for creating and submitting computational jobs in the system. It provides a comprehensive workflow that guides users through model selection, parameter configuration, and input data specification.
6
+ To submit a new workflow:
7
+
8
+ 1. Navigate to the submission page
9
+ 2. Select the workflow type from the available options
10
+ 3. Fill in the required parameters in the form
11
+ - Forms are dynamically generated based on the workflow type
12
+ - Required fields are marked with an asterisk (*)
13
+ - Help text provides guidance for each parameter
14
+ 4. Click "Submit" to start the workflow
15
+ 5. You'll be redirected to the dashboard where you can monitor the task's progress
16
+
17
+ The submission forms use React JSON Schema Form, which provides:
18
+
19
+ * **Validation**: Immediate feedback on invalid inputs
20
+ * **Conditional Fields**: Fields that appear based on other selections
21
+ * **File Uploads**: For workflows that require input files
22
+ * **Advanced Controls**: Sliders, dropdowns, and other interactive elements
23
+ * **Special Fields**: for complex objects, e.g. molecular data
24
+
25
+ The Submit Panel consists of several key sections organized in a logical workflow:
26
+
27
+ 1. **Model Selection** (CascadingNodeSelector)
28
+ 2. **Job Configuration** (Custom Name & Category)
29
+ 3. **Parameter Settings** (ParametersAccordion)
30
+ 4. **Input Data Configuration** (Input Mappings)
31
+ 5. **Template Management** (TemplateSelector)
32
+ 6. **Job Submission**
33
+
34
+
35
+ Node Selector
36
+ ~~~~~~~~~~~~~
37
+
38
+ The CascadingNodeSelector is the primary interface for browsing and selecting computational models from the available node registry.
39
+
40
+ .. figure:: resources/node_selector.png
41
+ :alt: Node Selector Interface
42
+ :align: center
43
+ :width: 700px
44
+
45
+ *Hierarchical model browser with favorites and tree structure*
46
+
47
+ **Hierarchical Model Organization**
48
+ Models are organized in a tree structure based on their function mapping, making it easy to navigate through different categories and modules.
49
+
50
+ .. figure:: resources/model-tree-structure.png
51
+ :alt: Model Tree Structure
52
+ :align: center
53
+ :width: 500px
54
+
55
+ *Example of hierarchical model organization which mirrors the directory structure of your project*
56
+
57
+ **Favorites System**
58
+ Users can mark frequently used models as favorites for quick access:
59
+
60
+ - Star icon checkbox for marking/unmarking favorites
61
+ - Dedicated "Favorites" section at the top of the tree
62
+ - Persistent favorite status across sessions
63
+
64
+
65
+ Once a model is selected, the ParametersAccordion and Input sections dynamically update to reflect the chosen model's requirements.
66
+
67
+ Parameter Settings
68
+ ~~~~~~~~~~~~~~~~~~
69
+
70
+ The ParametersAccordion section provides comprehensive job parameter configuration options.
71
+
72
+ .. figure:: resources/job-parameters.png
73
+ :alt: Parameters Accordion
74
+ :align: center
75
+ :width: 700px
76
+
77
+ *Complete parameters configuration interface (for a slurm-queue job)*
78
+
79
+ **Resource Selection**
80
+ Configure computational resources for job execution:
81
+
82
+ - Dropdown selection from allowed resources
83
+ - Default option available if no specific resource needed
84
+ - Dynamic loading of available resources from the system
85
+
86
+ **Queue Configuration**
87
+ Specify execution queue for job scheduling:
88
+
89
+ - Selection from allowed queues list
90
+ - When the SLURM queue is selected, additional SLURM parameters become available
91
+
92
+ **SLURM Parameters** (when using "slurm-queue")
93
+ Additional SLURM-specific configuration options become available when the SLURM queue is selected, including:
94
+
95
+ - Job allocation parameters
96
+ - Resource requirements
97
+ - Time limits
98
+ - Node specifications
99
+
100
+ **Execution Options**
101
+ Control job execution behavior:
102
+
103
+ - **Force Rerun**: Force execution even if cached results exist
104
+ - **Recompute Artifacts**: Regenerate all output artifacts regardless of cache status
105
+
106
+ **Custom Name & Category Editor**
107
+ Provides job identification and organization:
108
+
109
+ **Custom Name Field**
110
+ - User-defined name for the job
111
+ - Defaults to "submitted-job"
112
+ - Automatically saved to localStorage per operation
113
+
114
+ **Category Field**
115
+ - Organizational category for the job
116
+ - Defaults to "submission"
117
+ - Persistent storage with operation-specific recall
118
+
119
+ Model Input Section
120
+ ~~~~~~~~~~~~~~~~~~~
121
+
122
+ The Input section handles data configuration for each input mapping required by the selected model.
123
+ For each input mapping defined by the selected model:
124
+
125
+ .. figure:: resources/sample-input.png
126
+ :alt: Input Mapping Card
127
+ :align: center
128
+ :width: 650px
129
+
130
+ *Individual input mapping configuration card*
131
+
132
+ **Dynamic Form Generation**
133
+ - Automatically generated forms based on input mapping schema
134
+ - Real-time validation and data binding
135
+ - Memoized form components for optimal performance
136
+
137
+ **Template Management**
138
+ - Load existing input templates
139
+ - Save current configuration as template
140
+ - Update existing templates on submission
141
+ - Template-specific parameter inheritance
@@ -0,0 +1,50 @@
1
+ .. _tables:
2
+
3
+ Tables
4
+ ======
5
+
6
+ SimStack II provides a ``SimpleTable`` model to handle and display tabular data, especially for UI representation in ag-grid.
7
+
8
+ SimpleTable
9
+ -----------
10
+
11
+ The ``SimpleTable`` model allows you to define a table with headings, data types for columns, and rows of data.
12
+
13
+ **Key Features:**
14
+
15
+ * **UI Ready**: Designed to be used with a specialized UI field (``SimpleTableField``) that renders the data in an ag-grid component.
16
+ * **Flexible Rows**: Rows are stored as dictionaries, making it easy to map data to column headers.
17
+ * **Type Information**: Allows specifying the type of each column for better UI rendering or validation.
18
+
19
+ **Usage:**
20
+
21
+ .. code-block:: python
22
+
23
+ from simstack.models.simple_table import SimpleTable
24
+
25
+ table = SimpleTable(name="Experimental Results")
26
+
27
+ # Add columns with their types
28
+ table.add_column("Material", "string")
29
+ table.add_column("Temperature", "number")
30
+ table.add_column("Pressure", "number")
31
+
32
+ # Add rows as dictionaries
33
+ table.add_row({
34
+ "Material": "Silicon",
35
+ "Temperature": 300,
36
+ "Pressure": 1.0
37
+ })
38
+ table.add_row({
39
+ "Material": "Germanium",
40
+ "Temperature": 350,
41
+ "Pressure": 1.2
42
+ })
43
+
44
+ API Reference
45
+ -------------
46
+
47
+ .. autoclass:: simstack.models.simple_table.SimpleTable
48
+ :members:
49
+ :undoc-members:
50
+ :show-inheritance:
@@ -0,0 +1,92 @@
1
+ Testing Complex Nodes
2
+ =====================
3
+
4
+ This document explains the testing strategy for complex nodes in SimStack, focusing on the test generation and re-execution mechanism.
5
+
6
+ Overview
7
+ --------
8
+
9
+ In SimStack, some nodes perform complex tasks that might be difficult to reproduce in a standard unit test environment due to external dependencies, large data volumes, or non-deterministic behavior. To address this, we use a strategy of capturing the state of a successful node execution and using it to generate a repeatable test case.
10
+
11
+ The two main components of this strategy are:
12
+ 1. `simstack/src/simstack/methods/generate_test.py`: A tool to extract node data from the database and work directory.
13
+ 2. `examples/testing/testing_test_generation.py`: An example script demonstrating how to use generated tests and patch complex executions.
14
+
15
+ Test Generation (`generate_test.py`)
16
+ ------------------------------------
17
+
18
+ The `generate_test` method (and its CLI wrapper) allows developers to create a test case from an existing `NodeRegistry` entry.
19
+
20
+ Workflow:
21
+ 1. **Identify Node**: The user provides a `node_id` (ObjectId of a `NodeRegistry` entry).
22
+ 2. **Setup Target**: A target directory is created, organized by node name and argument hash: `target_base / node_name / arg_hash`.
23
+ 3. **Capture Files**: All files from the node's work directory (`workdir / node_name / node_id`) are copied to the target directory.
24
+ 4. **Serialize Data**:
25
+ - Input models are loaded from the database based on `input_references` and serialized to `inputs.json`.
26
+ - Output models (results) are loaded based on `results_references` and serialized to `outputs.json`.
27
+ - This is for convenience and not really needed for the test
28
+
29
+ This results in a self-contained directory containing everything needed to verify the node's behavior for a specific set of inputs.
30
+
31
+ Testing with Patches (`testing_test_generation.py`)
32
+ --------------------------------------------------
33
+
34
+ Once a test case is generated, it can be used to verify that changes to the node's logic don't break existing functionality, or to debug complex failures.
35
+
36
+ The example script `testing_test_generation.py` demonstrates a pattern for testing nodes that call external functions or have complex side effects.
37
+
38
+ ### The Problem: Complex Side Effects
39
+ Some nodes call functions that perform operations (like submitting a job to a cluster) which cannot be easily duplicated in testing.
40
+ The idea is to store all of the resulting inout and output files and also serialized versions of all costly intermediate results.
41
+ During a test run, we don't want to actually submit a new job; instead, we want to simulate the previous execution and
42
+ return the *original* `task_id` so that SimStack can find the associated files and results.
43
+
44
+ ### The Solution: Patching and Re-execution
45
+ The strategy involves patching the "inner" execution function during the test run.
46
+
47
+ 1. **Setup**: The node is first executed normally (or a previous execution is identified). All of the complex and costly computations are performed
48
+ in a function like `complex_task_execution` which **must** have the signature *args, **kwargs.
49
+ - The *args are used during normal execution to generate the costly data and serialize it.
50
+ - The function returns data needed to locally construct the output models. Generating the input files or arsing the output files of a job, which is
51
+ part of a test, should be outside `complex_task_execution`
52
+ - The goal is: Do all the stuff that can be locally and that needs to be testes outside of `complex_task_execution
53
+ 2. **Generation**: `generate_test` is called to create the test data.
54
+ 3. **Patching**: Using `unittest.mock.patch`, the function responsible for the side effect (e.g., `complex_task_execution`) is replaced with
55
+ a `patched_complex_task_execution`. This function also gets the *args and **kwargs. It needs the latter to automatically find
56
+ the test directory with respect to a test-directory root.
57
+ 4. **Mock Logic**: The patched function:
58
+ - Identifies the correct test directory using `arg_hash` and node name (provided in `kwargs`).
59
+ - The file can compare the input files generated in the test run with the input files in the test directory
60
+ - Restores the necessary files (e.g., `test.txt`) from the test directory to the current execution environment.
61
+ - Deserialize all important information to locally build the outputs of the nodes. In the test this is only the original `task_id`.
62
+
63
+ 5. **Re-execution**: The node is called again with `force_rerun=True`.
64
+ 6. **Verification**: The results of the re-execution are compared against the original results to ensure consistency.
65
+
66
+ Example Patch Implementation
67
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
68
+
69
+ .. code-block:: python
70
+
71
+ def patched_complex_task_execution(arg_patched, **kwargs_patched):
72
+ # Locate the test directory
73
+ test_dir = local_target_base / node_name / kwargs_patched["arg_hash"]
74
+
75
+ # Restore state
76
+ shutil.copy2(test_dir / "test.txt", Path.cwd() / "test.txt")
77
+
78
+ # Retrieve original ID
79
+ with open("test.txt", "r") as f:
80
+ original_task_id = f.readlines()[1].strip()
81
+
82
+ return original_task_id
83
+
84
+ with patch("__main__.complex_task_execution", side_effect=patched_complex_task_execution):
85
+ test_result = complex_task_for_testing(arg, parameters=Parameters(force_rerun=True))
86
+ # Assertions...
87
+
88
+ Benefits
89
+ --------
90
+ - **Reproducibility**: Easily reproduce complex node executions in a local environment.
91
+ - **Isolation**: Test node logic without triggering expensive or external side effects.
92
+ - **Verification**: Ensure that data processing remains consistent over time.