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,3320 @@
1
+ <!doctype html>
2
+ <html class="no-js" lang="en" data-content_root="../../">
3
+ <head><meta charset="utf-8">
4
+ <meta name="viewport" content="width=device-width,initial-scale=1">
5
+ <meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <link rel="index" title="Index" href="../../genindex.html"><link rel="search" title="Search" href="../../search.html"><link rel="prev" title="simstack.tables package" href="simstack.tables.html">
7
+
8
+ <!-- Generated with Sphinx 9.1.0 and Furo 2025.12.19 -->
9
+ <title>simstack.util package - SimStack II documentation</title>
10
+ <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=d111a655" />
11
+ <link rel="stylesheet" type="text/css" href="../../_static/styles/furo.css?v=7bdb33bb" />
12
+ <link rel="stylesheet" type="text/css" href="../../_static/styles/furo-extensions.css?v=8dab3a3b" />
13
+ <link rel="stylesheet" type="text/css" href="../../_static/cobalt2-theme.css?v=2d651046" />
14
+ <link rel="stylesheet" type="text/css" href="../../_static/docs-build-badge.css?v=803faff8" />
15
+
16
+
17
+
18
+
19
+ <style>
20
+ body {
21
+ --color-code-background: #f2f2f2;
22
+ --color-code-foreground: #1e1e1e;
23
+
24
+ }
25
+ @media not print {
26
+ body[data-theme="dark"] {
27
+ --color-code-background: #202020;
28
+ --color-code-foreground: #d0d0d0;
29
+ --color-background-primary: #132738;
30
+ --color-background-secondary: #1e3a52;
31
+ --color-foreground-primary: #ffffff;
32
+ --color-foreground-secondary: #bac8d3;
33
+ --color-brand-primary: #22d5ff;
34
+ --color-brand-content: #0088ff;
35
+
36
+ }
37
+ @media (prefers-color-scheme: dark) {
38
+ body:not([data-theme="light"]) {
39
+ --color-code-background: #202020;
40
+ --color-code-foreground: #d0d0d0;
41
+ --color-background-primary: #132738;
42
+ --color-background-secondary: #1e3a52;
43
+ --color-foreground-primary: #ffffff;
44
+ --color-foreground-secondary: #bac8d3;
45
+ --color-brand-primary: #22d5ff;
46
+ --color-brand-content: #0088ff;
47
+
48
+ }
49
+ }
50
+ }
51
+ </style></head>
52
+ <body>
53
+
54
+ <script>
55
+ document.body.dataset.theme = localStorage.getItem("theme") || "auto";
56
+ </script>
57
+
58
+
59
+ <svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
60
+ <symbol id="svg-toc" viewBox="0 0 24 24">
61
+ <title>Contents</title>
62
+ <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024">
63
+ <path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/>
64
+ </svg>
65
+ </symbol>
66
+ <symbol id="svg-menu" viewBox="0 0 24 24">
67
+ <title>Menu</title>
68
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
69
+ stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu">
70
+ <line x1="3" y1="12" x2="21" y2="12"></line>
71
+ <line x1="3" y1="6" x2="21" y2="6"></line>
72
+ <line x1="3" y1="18" x2="21" y2="18"></line>
73
+ </svg>
74
+ </symbol>
75
+ <symbol id="svg-arrow-right" viewBox="0 0 24 24">
76
+ <title>Expand</title>
77
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
78
+ stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right">
79
+ <polyline points="9 18 15 12 9 6"></polyline>
80
+ </svg>
81
+ </symbol>
82
+ <symbol id="svg-sun" viewBox="0 0 24 24">
83
+ <title>Light mode</title>
84
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
85
+ stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun">
86
+ <circle cx="12" cy="12" r="5"></circle>
87
+ <line x1="12" y1="1" x2="12" y2="3"></line>
88
+ <line x1="12" y1="21" x2="12" y2="23"></line>
89
+ <line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
90
+ <line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
91
+ <line x1="1" y1="12" x2="3" y2="12"></line>
92
+ <line x1="21" y1="12" x2="23" y2="12"></line>
93
+ <line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
94
+ <line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
95
+ </svg>
96
+ </symbol>
97
+ <symbol id="svg-moon" viewBox="0 0 24 24">
98
+ <title>Dark mode</title>
99
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
100
+ stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon">
101
+ <path stroke="none" d="M0 0h24v24H0z" fill="none" />
102
+ <path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" />
103
+ </svg>
104
+ </symbol>
105
+ <symbol id="svg-sun-with-moon" viewBox="0 0 24 24">
106
+ <title>Auto light/dark, in light mode</title>
107
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
108
+ stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
109
+ class="icon-custom-derived-from-feather-sun-and-tabler-moon">
110
+ <path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/>
111
+ <line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/>
112
+ <line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/>
113
+ <line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/>
114
+ <line x1="19" y1="14.05" x2="20.414" y2="15.464"/>
115
+ <line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/>
116
+ <line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/>
117
+ <line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/>
118
+ <line x1="19" y1="5.05" x2="20.414" y2="3.636"/>
119
+ <circle cx="14.5" cy="9.55" r="3.6"/>
120
+ </svg>
121
+ </symbol>
122
+ <symbol id="svg-moon-with-sun" viewBox="0 0 24 24">
123
+ <title>Auto light/dark, in dark mode</title>
124
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
125
+ stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
126
+ class="icon-custom-derived-from-feather-sun-and-tabler-moon">
127
+ <path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/>
128
+ <line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/>
129
+ <line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/>
130
+ <line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/>
131
+ <line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/>
132
+ <line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/>
133
+ <line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/>
134
+ <line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/>
135
+ <line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/>
136
+ <circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/>
137
+ </svg>
138
+ </symbol>
139
+ <symbol id="svg-pencil" viewBox="0 0 24 24">
140
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
141
+ stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code">
142
+ <path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
143
+ <path d="M13.5 6.5l4 4" />
144
+ <path d="M20 21l2 -2l-2 -2" />
145
+ <path d="M17 17l-2 2l2 2" />
146
+ </svg>
147
+ </symbol>
148
+ <symbol id="svg-eye" viewBox="0 0 24 24">
149
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
150
+ stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code">
151
+ <path stroke="none" d="M0 0h24v24H0z" fill="none" />
152
+ <path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
153
+ <path
154
+ d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" />
155
+ <path d="M20 21l2 -2l-2 -2" />
156
+ <path d="M17 17l-2 2l2 2" />
157
+ </svg>
158
+ </symbol>
159
+ </svg>
160
+
161
+ <input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation" aria-label="Toggle site navigation sidebar">
162
+ <input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc" aria-label="Toggle table of contents sidebar">
163
+ <label class="overlay sidebar-overlay" for="__navigation"></label>
164
+ <label class="overlay toc-overlay" for="__toc"></label>
165
+
166
+ <a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>
167
+
168
+
169
+
170
+ <div class="page">
171
+ <header class="mobile-header">
172
+ <div class="header-left">
173
+ <label class="nav-overlay-icon" for="__navigation">
174
+ <span class="icon"><svg><use href="#svg-menu"></use></svg></span>
175
+ </label>
176
+ </div>
177
+ <div class="header-center">
178
+ <a href="../../index.html"><div class="brand">SimStack II documentation</div></a>
179
+ </div>
180
+ <div class="header-right">
181
+ <div class="theme-toggle-container theme-toggle-header">
182
+ <button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
183
+ <svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
184
+ <svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
185
+ <svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
186
+ <svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
187
+ </button>
188
+ </div>
189
+ <label class="toc-overlay-icon toc-header-icon" for="__toc">
190
+ <span class="icon"><svg><use href="#svg-toc"></use></svg></span>
191
+ </label>
192
+ </div>
193
+ </header>
194
+ <aside class="sidebar-drawer">
195
+ <div class="sidebar-container">
196
+
197
+ <div class="sidebar-sticky"><a class="sidebar-brand" href="../../index.html">
198
+
199
+
200
+ </a><form class="sidebar-search-container" method="get" action="../../search.html" role="search">
201
+ <input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
202
+ <input type="hidden" name="check_keywords" value="yes">
203
+ <input type="hidden" name="area" value="default">
204
+ </form>
205
+ <div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree">
206
+ <p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
207
+ <ul class="current">
208
+ <li class="toctree-l1"><a class="reference internal" href="../../overview.html">Overview</a></li>
209
+ <li class="toctree-l1"><a class="reference internal" href="../../workflows.html">Workflows</a></li>
210
+ <li class="toctree-l1"><a class="reference internal" href="../../ui_documentation.html">Graphical User Interface</a></li>
211
+ <li class="toctree-l1 has-children"><a class="reference internal" href="../../developer_guide.html">Developer Guide</a><input aria-label="Toggle navigation of Developer Guide" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch" type="checkbox"/><label for="toctree-checkbox-1"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
212
+ <li class="toctree-l2"><a class="reference internal" href="../../data.html">Persisting and Visualizing Data</a></li>
213
+ <li class="toctree-l2"><a class="reference internal" href="../../datasets.html">Datasets</a></li>
214
+ <li class="toctree-l2"><a class="reference internal" href="../../lists.html">List Mixins</a></li>
215
+ <li class="toctree-l2"><a class="reference internal" href="../../array_lists.html">Array Lists</a></li>
216
+ <li class="toctree-l2"><a class="reference internal" href="../../tables.html">Tables</a></li>
217
+ <li class="toctree-l2"><a class="reference internal" href="../../files.html">File Management</a></li>
218
+ <li class="toctree-l2"><a class="reference internal" href="../../resource_config.html">Program Execution</a></li>
219
+ <li class="toctree-l2"><a class="reference internal" href="../../mass_runner.html">MassRunner</a></li>
220
+ <li class="toctree-l2"><a class="reference internal" href="../../fire_and_forget_runner.html">FireAndForgetRunner</a></li>
221
+ <li class="toctree-l2"><a class="reference internal" href="../../docker_nodes.html">Creating Docker Containers for SimStack Nodes</a></li>
222
+ <li class="toctree-l2"><a class="reference internal" href="../../testing_complex_nodes.html">Testing Complex Nodes</a></li>
223
+ <li class="toctree-l2"><a class="reference internal" href="../../database_migrations.html">Database Migrations</a></li>
224
+ <li class="toctree-l2"><a class="reference internal" href="../../ci_pipeline.html">CI Pipeline and Documentation Artifacts</a></li>
225
+ <li class="toctree-l2"><a class="reference internal" href="../../misc.html">Miscellaneous</a></li>
226
+ </ul>
227
+ </li>
228
+ <li class="toctree-l1"><a class="reference internal" href="../../installation.html">Simstack II Setup</a></li>
229
+ <li class="toctree-l1 current has-children"><a class="reference internal" href="modules.html">simstack</a><input aria-label="Toggle navigation of simstack" checked="" class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul class="current">
230
+ <li class="toctree-l2 current has-children"><a class="reference internal" href="simstack.html">simstack package</a><input aria-label="Toggle navigation of simstack package" checked="" class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" role="switch" type="checkbox"/><label for="toctree-checkbox-3"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul class="current">
231
+ <li class="toctree-l3 has-children"><a class="reference internal" href="simstack.core.html">simstack.core package</a><input aria-label="Toggle navigation of simstack.core package" class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" role="switch" type="checkbox"/><label for="toctree-checkbox-4"><span class="icon"><svg><use href="#svg-arrow-right"></use></svg></span></label><ul>
232
+ <li class="toctree-l4"><a class="reference internal" href="simstack.core.services.html">simstack.core.services package</a></li>
233
+ </ul>
234
+ </li>
235
+ <li class="toctree-l3"><a class="reference internal" href="simstack.methods.html">simstack.methods package</a></li>
236
+ <li class="toctree-l3"><a class="reference internal" href="simstack.models.html">simstack.models package</a></li>
237
+ <li class="toctree-l3"><a class="reference internal" href="simstack.tables.html">simstack.tables package</a></li>
238
+ <li class="toctree-l3 current current-page"><a class="current reference internal" href="#">simstack.util package</a></li>
239
+ </ul>
240
+ </li>
241
+ </ul>
242
+ </li>
243
+ </ul>
244
+
245
+ </div>
246
+ </div>
247
+
248
+ </div>
249
+
250
+ </div>
251
+ </aside>
252
+ <div class="main">
253
+ <div class="content">
254
+ <div class="article-container">
255
+ <a href="#" class="back-to-top muted-link">
256
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
257
+ <path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
258
+ </svg>
259
+ <span>Back to top</span>
260
+ </a>
261
+ <div class="content-icon-container">
262
+ <div class="view-this-page">
263
+ <a class="muted-link" href="../../_sources/simstack/modules/simstack.util.rst.txt" title="View this page">
264
+ <svg><use href="#svg-eye"></use></svg>
265
+ <span class="visually-hidden">View this page</span>
266
+ </a>
267
+ </div>
268
+ <div class="theme-toggle-container theme-toggle-content">
269
+ <button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
270
+ <svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
271
+ <svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
272
+ <svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
273
+ <svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
274
+ </button>
275
+ </div>
276
+ <label class="toc-overlay-icon toc-content-icon" for="__toc">
277
+ <span class="icon"><svg><use href="#svg-toc"></use></svg></span>
278
+ </label>
279
+ </div>
280
+ <article role="main" id="furo-main-content">
281
+ <section id="simstack-util-package">
282
+ <h1>simstack.util package<a class="headerlink" href="#simstack-util-package" title="Link to this heading">¶</a></h1>
283
+ <section id="submodules">
284
+ <h2>Submodules<a class="headerlink" href="#submodules" title="Link to this heading">¶</a></h2>
285
+ </section>
286
+ <section id="module-simstack.util.async_zip_utils">
287
+ <span id="simstack-util-async-zip-utils-module"></span><h2>simstack.util.async_zip_utils module<a class="headerlink" href="#module-simstack.util.async_zip_utils" title="Link to this heading">¶</a></h2>
288
+ <dl class="py function">
289
+ <dt class="sig sig-object py" id="simstack.util.async_zip_utils.async_zip">
290
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.async_zip_utils.</span></span><span class="sig-name descname"><span class="pre">async_zip</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">async_gen1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">async_gen2</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/async_zip_utils.html#async_zip"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.async_zip_utils.async_zip" title="Link to this definition">¶</a></dt>
291
+ <dd><p>Async version of zip for two async generators</p>
292
+ </dd></dl>
293
+
294
+ <dl class="py function">
295
+ <dt class="sig sig-object py" id="simstack.util.async_zip_utils.async_zip_multiple">
296
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.async_zip_utils.</span></span><span class="sig-name descname"><span class="pre">async_zip_multiple</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">async_generators</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/async_zip_utils.html#async_zip_multiple"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.async_zip_utils.async_zip_multiple" title="Link to this definition">¶</a></dt>
297
+ <dd><p>Async version of zip for multiple async generators</p>
298
+ </dd></dl>
299
+
300
+ </section>
301
+ <section id="module-simstack.util.b64mixin">
302
+ <span id="simstack-util-b64mixin-module"></span><h2>simstack.util.b64mixin module<a class="headerlink" href="#module-simstack.util.b64mixin" title="Link to this heading">¶</a></h2>
303
+ <dl class="py class">
304
+ <dt class="sig sig-object py" id="simstack.util.b64mixin.BytesB64Mixin">
305
+ <span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.b64mixin.</span></span><span class="sig-name descname"><span class="pre">BytesB64Mixin</span></span><a class="reference internal" href="../../_modules/simstack/util/b64mixin.html#BytesB64Mixin"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.b64mixin.BytesB64Mixin" title="Link to this definition">¶</a></dt>
306
+ <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
307
+ <p>Mixin that teaches Pydantic/ODMantic to serialise <em>bytes</em> fields as
308
+ base-64-encoded ASCII strings when exporting to JSON (dict / response).</p>
309
+ <dl class="py attribute">
310
+ <dt class="sig sig-object py" id="simstack.util.b64mixin.BytesB64Mixin.model_config">
311
+ <span class="sig-name descname"><span class="pre">model_config</span></span><span class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{'json_encoders':</span> <span class="pre">{&lt;class</span> <span class="pre">'bytes'&gt;:</span> <span class="pre">&lt;function</span> <span class="pre">BytesB64Mixin.&lt;lambda&gt;&gt;}}</span></span><a class="headerlink" href="#simstack.util.b64mixin.BytesB64Mixin.model_config" title="Link to this definition">¶</a></dt>
312
+ <dd></dd></dl>
313
+
314
+ </dd></dl>
315
+
316
+ </section>
317
+ <section id="module-simstack.util.cleaned_json_schema">
318
+ <span id="simstack-util-cleaned-json-schema-module"></span><h2>simstack.util.cleaned_json_schema module<a class="headerlink" href="#module-simstack.util.cleaned_json_schema" title="Link to this heading">¶</a></h2>
319
+ <dl class="py function">
320
+ <dt class="sig sig-object py" id="simstack.util.cleaned_json_schema.cleaned_json_schema">
321
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.cleaned_json_schema.</span></span><span class="sig-name descname"><span class="pre">cleaned_json_schema</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cls</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/cleaned_json_schema.html#cleaned_json_schema"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.cleaned_json_schema.cleaned_json_schema" title="Link to this definition">¶</a></dt>
322
+ <dd><p>Generates a JSON schema for the given class and its fields, but eliminates
323
+ all fields which are models, embedded models, or references to models.</p>
324
+ <dl class="field-list simple">
325
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
326
+ <dd class="field-odd"><p><strong>cls</strong></p>
327
+ </dd>
328
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
329
+ <dd class="field-even"><p></p>
330
+ </dd>
331
+ </dl>
332
+ </dd></dl>
333
+
334
+ </section>
335
+ <section id="module-simstack.util.config_reader">
336
+ <span id="simstack-util-config-reader-module"></span><h2>simstack.util.config_reader module<a class="headerlink" href="#module-simstack.util.config_reader" title="Link to this heading">¶</a></h2>
337
+ <dl class="py class">
338
+ <dt class="sig sig-object py" id="simstack.util.config_reader.ConfigReader">
339
+ <span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.config_reader.</span></span><span class="sig-name descname"><span class="pre">ConfigReader</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">db_info</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#simstack.util.database_information.DatabaseInformation" title="simstack.util.database_information.DatabaseInformation"><span class="pre">DatabaseInformation</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><a class="reference internal" href="#simstack.util.db.Database" title="simstack.util.db.Database"><span class="pre">Database</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">resource_definition</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="simstack.models.html#simstack.models.resource_definition.ResourceDefinition" title="simstack.models.resource_definition.ResourceDefinition"><span class="pre">ResourceDefinition</span></a></span></em>, <em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">project_root</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">git_list</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="simstack.models.html#simstack.models.resource_definition.GitRepo" title="simstack.models.resource_definition.GitRepo"><span class="pre">GitRepo</span></a><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/config_reader.html#ConfigReader"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.config_reader.ConfigReader" title="Link to this definition">¶</a></dt>
340
+ <dd><p>Bases: <a class="reference internal" href="#simstack.util.database_information.DatabaseInformation" title="simstack.util.database_information.DatabaseInformation"><code class="xref py py-class docutils literal notranslate"><span class="pre">DatabaseInformation</span></code></a></p>
341
+ <p>Represents a configuration reader that integrates with a database and a resource
342
+ definition system.</p>
343
+ <dl class="py method">
344
+ <dt class="sig sig-object py" id="simstack.util.config_reader.ConfigReader.create">
345
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">create</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">resource_str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">db</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#simstack.util.db.Database" title="simstack.util.db.Database"><span class="pre">Database</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">toml_reader</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#simstack.util.toml_reader.TomlReader" title="simstack.util.toml_reader.TomlReader"><span class="pre">TomlReader</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">project_root</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Path</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/config_reader.html#ConfigReader.create"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.config_reader.ConfigReader.create" title="Link to this definition">¶</a></dt>
346
+ <dd><p>the idea here is to attempt to get:</p>
347
+ <ol class="arabic simple">
348
+ <li><p>all required data from the kwargs, if available</p></li>
349
+ <li><p>if the data is not all available, get it from the database</p></li>
350
+ </ol>
351
+ </dd></dl>
352
+
353
+ <dl class="py property">
354
+ <dt class="sig sig-object py" id="simstack.util.config_reader.ConfigReader.docker">
355
+ <span class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">docker</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></span><a class="headerlink" href="#simstack.util.config_reader.ConfigReader.docker" title="Link to this definition">¶</a></dt>
356
+ <dd></dd></dl>
357
+
358
+ <dl class="py property">
359
+ <dt class="sig sig-object py" id="simstack.util.config_reader.ConfigReader.environment_start">
360
+ <span class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">environment_start</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></span><a class="headerlink" href="#simstack.util.config_reader.ConfigReader.environment_start" title="Link to this definition">¶</a></dt>
361
+ <dd></dd></dl>
362
+
363
+ <dl class="py property">
364
+ <dt class="sig sig-object py" id="simstack.util.config_reader.ConfigReader.git_list">
365
+ <span class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">git_list</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="simstack.models.html#simstack.models.resource_definition.GitRepo" title="simstack.models.resource_definition.GitRepo"><span class="pre">GitRepo</span></a><span class="p"><span class="pre">]</span></span></span><a class="headerlink" href="#simstack.util.config_reader.ConfigReader.git_list" title="Link to this definition">¶</a></dt>
366
+ <dd></dd></dl>
367
+
368
+ <dl class="py property">
369
+ <dt class="sig sig-object py" id="simstack.util.config_reader.ConfigReader.hostname">
370
+ <span class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">hostname</span></span><a class="headerlink" href="#simstack.util.config_reader.ConfigReader.hostname" title="Link to this definition">¶</a></dt>
371
+ <dd></dd></dl>
372
+
373
+ <dl class="py property">
374
+ <dt class="sig sig-object py" id="simstack.util.config_reader.ConfigReader.project_root">
375
+ <span class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">project_root</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">Path</span></span><a class="headerlink" href="#simstack.util.config_reader.ConfigReader.project_root" title="Link to this definition">¶</a></dt>
376
+ <dd></dd></dl>
377
+
378
+ <dl class="py property">
379
+ <dt class="sig sig-object py" id="simstack.util.config_reader.ConfigReader.python_paths">
380
+ <span class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">python_paths</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Path</span><span class="p"><span class="pre">]</span></span></span><a class="headerlink" href="#simstack.util.config_reader.ConfigReader.python_paths" title="Link to this definition">¶</a></dt>
381
+ <dd></dd></dl>
382
+
383
+ <dl class="py property">
384
+ <dt class="sig sig-object py" id="simstack.util.config_reader.ConfigReader.resource">
385
+ <span class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">resource</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference internal" href="simstack.models.html#simstack.models.parameters.Resource" title="simstack.models.parameters.Resource"><span class="pre">Resource</span></a></span><a class="headerlink" href="#simstack.util.config_reader.ConfigReader.resource" title="Link to this definition">¶</a></dt>
386
+ <dd></dd></dl>
387
+
388
+ <dl class="py property">
389
+ <dt class="sig sig-object py" id="simstack.util.config_reader.ConfigReader.server_token">
390
+ <span class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">server_token</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></span><a class="headerlink" href="#simstack.util.config_reader.ConfigReader.server_token" title="Link to this definition">¶</a></dt>
391
+ <dd></dd></dl>
392
+
393
+ <dl class="py property">
394
+ <dt class="sig sig-object py" id="simstack.util.config_reader.ConfigReader.server_url">
395
+ <span class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">server_url</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></span><a class="headerlink" href="#simstack.util.config_reader.ConfigReader.server_url" title="Link to this definition">¶</a></dt>
396
+ <dd></dd></dl>
397
+
398
+ <dl class="py property">
399
+ <dt class="sig sig-object py" id="simstack.util.config_reader.ConfigReader.ssh_key">
400
+ <span class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">ssh_key</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">Path</span></span><a class="headerlink" href="#simstack.util.config_reader.ConfigReader.ssh_key" title="Link to this definition">¶</a></dt>
401
+ <dd></dd></dl>
402
+
403
+ <dl class="py property">
404
+ <dt class="sig sig-object py" id="simstack.util.config_reader.ConfigReader.workdir">
405
+ <span class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">workdir</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">Path</span></span><a class="headerlink" href="#simstack.util.config_reader.ConfigReader.workdir" title="Link to this definition">¶</a></dt>
406
+ <dd></dd></dl>
407
+
408
+ </dd></dl>
409
+
410
+ </section>
411
+ <section id="module-simstack.util.custom_model_dump">
412
+ <span id="simstack-util-custom-model-dump-module"></span><h2>simstack.util.custom_model_dump module<a class="headerlink" href="#module-simstack.util.custom_model_dump" title="Link to this heading">¶</a></h2>
413
+ <dl class="py function">
414
+ <dt class="sig sig-object py" id="simstack.util.custom_model_dump.custom_model_dump">
415
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.custom_model_dump.</span></span><span class="sig-name descname"><span class="pre">custom_model_dump</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/custom_model_dump.html#custom_model_dump"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.custom_model_dump.custom_model_dump" title="Link to this definition">¶</a></dt>
416
+ <dd><p>Custom model dump method to handle the conversion of model instances to dictionaries.
417
+ This method recursively traverses dictionaries and lists to convert any nested
418
+ model instances to their dictionary representation.</p>
419
+ <dl class="field-list simple">
420
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
421
+ <dd class="field-odd"><ul class="simple">
422
+ <li><p><strong>self</strong> – The model instance</p></li>
423
+ <li><p><strong>kwargs</strong> – Additional keyword arguments</p></li>
424
+ </ul>
425
+ </dd>
426
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
427
+ <dd class="field-even"><p>A dictionary representation of the model instance</p>
428
+ </dd>
429
+ </dl>
430
+ </dd></dl>
431
+
432
+ </section>
433
+ <section id="module-simstack.util.database_information">
434
+ <span id="simstack-util-database-information-module"></span><h2>simstack.util.database_information module<a class="headerlink" href="#module-simstack.util.database_information" title="Link to this heading">¶</a></h2>
435
+ <dl class="py class">
436
+ <dt class="sig sig-object py" id="simstack.util.database_information.DatabaseInformation">
437
+ <span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.database_information.</span></span><span class="sig-name descname"><span class="pre">DatabaseInformation</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">db_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">connection_string</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">db_type</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="simstack.core.html#simstack.core.definitions.DBType" title="simstack.core.definitions.DBType"><span class="pre">DBType</span></a></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">DBType.MONGODB</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">server_url</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">server_token</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/database_information.html#DatabaseInformation"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.database_information.DatabaseInformation" title="Link to this definition">¶</a></dt>
438
+ <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
439
+ <p>Represents a database and its connection information.</p>
440
+ <p>This class encapsulates essential details about a database, including its name and
441
+ connection string. It provides a convenient method for initializing this information
442
+ from a configuration file, facilitating streamlined database setups and connections.</p>
443
+ <dl class="py attribute">
444
+ <dt class="sig sig-object py" id="simstack.util.database_information.DatabaseInformation._db_name">
445
+ <span class="sig-name descname"><span class="pre">_db_name</span></span><a class="headerlink" href="#simstack.util.database_information.DatabaseInformation._db_name" title="Link to this definition">¶</a></dt>
446
+ <dd><p>The name of the database.</p>
447
+ <dl class="field-list simple">
448
+ <dt class="field-odd">Type<span class="colon">:</span></dt>
449
+ <dd class="field-odd"><p>str</p>
450
+ </dd>
451
+ </dl>
452
+ </dd></dl>
453
+
454
+ <dl class="py attribute">
455
+ <dt class="sig sig-object py" id="simstack.util.database_information.DatabaseInformation._connection_string">
456
+ <span class="sig-name descname"><span class="pre">_connection_string</span></span><a class="headerlink" href="#simstack.util.database_information.DatabaseInformation._connection_string" title="Link to this definition">¶</a></dt>
457
+ <dd><p>The connection string used to access the database.</p>
458
+ <dl class="field-list simple">
459
+ <dt class="field-odd">Type<span class="colon">:</span></dt>
460
+ <dd class="field-odd"><p>str</p>
461
+ </dd>
462
+ </dl>
463
+ </dd></dl>
464
+
465
+ <dl class="py method">
466
+ <dt class="sig sig-object py" id="simstack.util.database_information.DatabaseInformation.from_config_file">
467
+ <span class="sig-name descname"><span class="pre">from_config_file</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">config</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#simstack.util.database_information.DatabaseInformation.from_config_file" title="Link to this definition">¶</a></dt>
468
+ <dd><p>Initialize DatabaseInformation from TOML config or a database specified in TOML.</p>
469
+ </dd></dl>
470
+
471
+ <dl class="py property">
472
+ <dt class="sig sig-object py" id="simstack.util.database_information.DatabaseInformation.connection_string">
473
+ <span class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">connection_string</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></span><a class="headerlink" href="#simstack.util.database_information.DatabaseInformation.connection_string" title="Link to this definition">¶</a></dt>
474
+ <dd></dd></dl>
475
+
476
+ <dl class="py property">
477
+ <dt class="sig sig-object py" id="simstack.util.database_information.DatabaseInformation.db_name">
478
+ <span class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">db_name</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></span><a class="headerlink" href="#simstack.util.database_information.DatabaseInformation.db_name" title="Link to this definition">¶</a></dt>
479
+ <dd></dd></dl>
480
+
481
+ <dl class="py property">
482
+ <dt class="sig sig-object py" id="simstack.util.database_information.DatabaseInformation.db_type">
483
+ <span class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">db_type</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference internal" href="simstack.core.html#simstack.core.definitions.DBType" title="simstack.core.definitions.DBType"><span class="pre">DBType</span></a></span><a class="headerlink" href="#simstack.util.database_information.DatabaseInformation.db_type" title="Link to this definition">¶</a></dt>
484
+ <dd></dd></dl>
485
+
486
+ <dl class="py method">
487
+ <dt class="sig sig-object py" id="simstack.util.database_information.DatabaseInformation.from_config">
488
+ <span class="property"><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">from_config</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">config</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/database_information.html#DatabaseInformation.from_config"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.database_information.DatabaseInformation.from_config" title="Link to this definition">¶</a></dt>
489
+ <dd><p>Initialize DatabaseInformation from TOML config
490
+ kwargs override config file.</p>
491
+ </dd></dl>
492
+
493
+ <dl class="py method">
494
+ <dt class="sig sig-object py" id="simstack.util.database_information.DatabaseInformation.from_db_info">
495
+ <span class="property"><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">from_db_info</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">db_info</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#simstack.util.database_information.DatabaseInformation" title="simstack.util.database_information.DatabaseInformation"><span class="pre">DatabaseInformation</span></a></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/database_information.html#DatabaseInformation.from_db_info"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.database_information.DatabaseInformation.from_db_info" title="Link to this definition">¶</a></dt>
496
+ <dd></dd></dl>
497
+
498
+ <dl class="py method">
499
+ <dt class="sig sig-object py" id="simstack.util.database_information.DatabaseInformation.from_db_info_or_db">
500
+ <span class="property"><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">from_db_info_or_db</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">db_info</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="s"><span class="pre">'DatabaseInformation'</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="s"><span class="pre">'Database'</span></span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/database_information.html#DatabaseInformation.from_db_info_or_db"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.database_information.DatabaseInformation.from_db_info_or_db" title="Link to this definition">¶</a></dt>
501
+ <dd></dd></dl>
502
+
503
+ <dl class="py method">
504
+ <dt class="sig sig-object py" id="simstack.util.database_information.DatabaseInformation.get_information">
505
+ <span class="sig-name descname"><span class="pre">get_information</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/database_information.html#DatabaseInformation.get_information"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.database_information.DatabaseInformation.get_information" title="Link to this definition">¶</a></dt>
506
+ <dd><p>Returns a tuple of the initialization parameters that can be used as <a href="#id1"><span class="problematic" id="id2">*</span></a>args for __init__.</p>
507
+ <dl class="field-list simple">
508
+ <dt class="field-odd">Returns<span class="colon">:</span></dt>
509
+ <dd class="field-odd"><p>(db_name, connection_string, db_type)</p>
510
+ </dd>
511
+ <dt class="field-even">Return type<span class="colon">:</span></dt>
512
+ <dd class="field-even"><p>tuple</p>
513
+ </dd>
514
+ </dl>
515
+ </dd></dl>
516
+
517
+ <dl class="py property">
518
+ <dt class="sig sig-object py" id="simstack.util.database_information.DatabaseInformation.server_token">
519
+ <span class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">server_token</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></span><a class="headerlink" href="#simstack.util.database_information.DatabaseInformation.server_token" title="Link to this definition">¶</a></dt>
520
+ <dd></dd></dl>
521
+
522
+ <dl class="py property">
523
+ <dt class="sig sig-object py" id="simstack.util.database_information.DatabaseInformation.server_url">
524
+ <span class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">server_url</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></span><a class="headerlink" href="#simstack.util.database_information.DatabaseInformation.server_url" title="Link to this definition">¶</a></dt>
525
+ <dd></dd></dl>
526
+
527
+ </dd></dl>
528
+
529
+ </section>
530
+ <section id="module-simstack.util.db">
531
+ <span id="simstack-util-db-module"></span><h2>simstack.util.db module<a class="headerlink" href="#module-simstack.util.db" title="Link to this heading">¶</a></h2>
532
+ <dl class="py class">
533
+ <dt class="sig sig-object py" id="simstack.util.db.Database">
534
+ <span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.db.</span></span><span class="sig-name descname"><span class="pre">Database</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">AsyncIOMotorClient</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">database_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">connection_string</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">engine</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">db_type</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="simstack.core.html#simstack.core.definitions.DBType" title="simstack.core.definitions.DBType"><span class="pre">DBType</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">server_url</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">server_token</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/db.html#Database"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.db.Database" title="Link to this definition">¶</a></dt>
535
+ <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
536
+ <p>Server-owned database facade.</p>
537
+ <p>The server should depend on this object instead of reaching into SimStack
538
+ core engine abstractions directly. The underlying persistence primitive is
539
+ the plain ODMantic engine; SimStack-specific behavior lives in this facade.</p>
540
+ <dl class="py method">
541
+ <dt class="sig sig-object py" id="simstack.util.db.Database.apply_resource_assignment_to_node_registry">
542
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">apply_resource_assignment_to_node_registry</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">node_registry</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Any</span></span></span><a class="reference internal" href="../../_modules/simstack/util/db.html#Database.apply_resource_assignment_to_node_registry"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.db.Database.apply_resource_assignment_to_node_registry" title="Link to this definition">¶</a></dt>
543
+ <dd></dd></dl>
544
+
545
+ <dl class="py property">
546
+ <dt class="sig sig-object py" id="simstack.util.db.Database.client">
547
+ <span class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">client</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">motor.motor_asyncio.AsyncIOMotorClient</span></span><a class="headerlink" href="#simstack.util.db.Database.client" title="Link to this definition">¶</a></dt>
548
+ <dd></dd></dl>
549
+
550
+ <dl class="py method">
551
+ <dt class="sig sig-object py" id="simstack.util.db.Database.close">
552
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">close</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/db.html#Database.close"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.db.Database.close" title="Link to this definition">¶</a></dt>
553
+ <dd></dd></dl>
554
+
555
+ <dl class="py method">
556
+ <dt class="sig sig-object py" id="simstack.util.db.Database.collection">
557
+ <span class="sig-name descname"><span class="pre">collection</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_or_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Any</span></span></span><a class="reference internal" href="../../_modules/simstack/util/db.html#Database.collection"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.db.Database.collection" title="Link to this definition">¶</a></dt>
558
+ <dd></dd></dl>
559
+
560
+ <dl class="py property">
561
+ <dt class="sig sig-object py" id="simstack.util.db.Database.connection_string">
562
+ <span class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">connection_string</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><a class="headerlink" href="#simstack.util.db.Database.connection_string" title="Link to this definition">¶</a></dt>
563
+ <dd></dd></dl>
564
+
565
+ <dl class="py property">
566
+ <dt class="sig sig-object py" id="simstack.util.db.Database.core_engine">
567
+ <span class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">core_engine</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">Any</span></span><a class="headerlink" href="#simstack.util.db.Database.core_engine" title="Link to this definition">¶</a></dt>
568
+ <dd><p>Compatibility escape hatch for SimStack core internals only.</p>
569
+ </dd></dl>
570
+
571
+ <dl class="py property">
572
+ <dt class="sig sig-object py" id="simstack.util.db.Database.databae_type">
573
+ <span class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">databae_type</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference internal" href="simstack.core.html#simstack.core.definitions.DBType" title="simstack.core.definitions.DBType"><span class="pre">DBType</span></a></span><a class="headerlink" href="#simstack.util.db.Database.databae_type" title="Link to this definition">¶</a></dt>
574
+ <dd></dd></dl>
575
+
576
+ <dl class="py property">
577
+ <dt class="sig sig-object py" id="simstack.util.db.Database.database">
578
+ <span class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">database</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">Any</span></span><a class="headerlink" href="#simstack.util.db.Database.database" title="Link to this definition">¶</a></dt>
579
+ <dd></dd></dl>
580
+
581
+ <dl class="py property">
582
+ <dt class="sig sig-object py" id="simstack.util.db.Database.database_name">
583
+ <span class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">database_name</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></span><a class="headerlink" href="#simstack.util.db.Database.database_name" title="Link to this definition">¶</a></dt>
584
+ <dd></dd></dl>
585
+
586
+ <dl class="py method">
587
+ <dt class="sig sig-object py" id="simstack.util.db.Database.delete">
588
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">delete</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Any</span></span></span><a class="reference internal" href="../../_modules/simstack/util/db.html#Database.delete"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.db.Database.delete" title="Link to this definition">¶</a></dt>
589
+ <dd></dd></dl>
590
+
591
+ <dl class="py method">
592
+ <dt class="sig sig-object py" id="simstack.util.db.Database.find">
593
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">find</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Any</span></span></span><a class="reference internal" href="../../_modules/simstack/util/db.html#Database.find"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.db.Database.find" title="Link to this definition">¶</a></dt>
594
+ <dd></dd></dl>
595
+
596
+ <dl class="py method">
597
+ <dt class="sig sig-object py" id="simstack.util.db.Database.find_all">
598
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">find_all</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Any</span></span></span><a class="reference internal" href="../../_modules/simstack/util/db.html#Database.find_all"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.db.Database.find_all" title="Link to this definition">¶</a></dt>
599
+ <dd></dd></dl>
600
+
601
+ <dl class="py method">
602
+ <dt class="sig sig-object py" id="simstack.util.db.Database.find_all_artifacts">
603
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">find_all_artifacts</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">node_registry</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Any</span></span></span><a class="reference internal" href="../../_modules/simstack/util/db.html#Database.find_all_artifacts"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.db.Database.find_all_artifacts" title="Link to this definition">¶</a></dt>
604
+ <dd></dd></dl>
605
+
606
+ <dl class="py method">
607
+ <dt class="sig sig-object py" id="simstack.util.db.Database.find_artifact_mappings">
608
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">find_artifact_mappings</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">node_registry_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Any</span></span></span><a class="reference internal" href="../../_modules/simstack/util/db.html#Database.find_artifact_mappings"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.db.Database.find_artifact_mappings" title="Link to this definition">¶</a></dt>
609
+ <dd></dd></dl>
610
+
611
+ <dl class="py method">
612
+ <dt class="sig sig-object py" id="simstack.util.db.Database.find_one">
613
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">find_one</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Any</span></span></span><a class="reference internal" href="../../_modules/simstack/util/db.html#Database.find_one"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.db.Database.find_one" title="Link to this definition">¶</a></dt>
614
+ <dd></dd></dl>
615
+
616
+ <dl class="py method">
617
+ <dt class="sig sig-object py" id="simstack.util.db.Database.find_one_by_model_name">
618
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">find_one_by_model_name</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_mapping</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">item_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">ObjectId</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Any</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/db.html#Database.find_one_by_model_name"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.db.Database.find_one_by_model_name" title="Link to this definition">¶</a></dt>
619
+ <dd></dd></dl>
620
+
621
+ <dl class="py method">
622
+ <dt class="sig sig-object py" id="simstack.util.db.Database.from_db_info">
623
+ <span class="property"><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">from_db_info</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">db_info</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#simstack.util.database_information.DatabaseInformation" title="simstack.util.database_information.DatabaseInformation"><span class="pre">DatabaseInformation</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#simstack.util.db.Database" title="simstack.util.db.Database"><span class="pre">Database</span></a></span></span><a class="reference internal" href="../../_modules/simstack/util/db.html#Database.from_db_info"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.db.Database.from_db_info" title="Link to this definition">¶</a></dt>
624
+ <dd></dd></dl>
625
+
626
+ <dl class="py method">
627
+ <dt class="sig sig-object py" id="simstack.util.db.Database.get_collection">
628
+ <span class="sig-name descname"><span class="pre">get_collection</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_or_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Any</span></span></span><a class="reference internal" href="../../_modules/simstack/util/db.html#Database.get_collection"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.db.Database.get_collection" title="Link to this definition">¶</a></dt>
629
+ <dd><p>Temporary compatibility alias for code still being migrated.</p>
630
+ </dd></dl>
631
+
632
+ <dl class="py method">
633
+ <dt class="sig sig-object py" id="simstack.util.db.Database.load_task">
634
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">load_task</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">arg_hash</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">function_hash</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="simstack.models.html#simstack.models.node_registry.NodeRegistry" title="simstack.models.node_registry.NodeRegistry"><span class="pre">NodeRegistry</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/db.html#Database.load_task"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.db.Database.load_task" title="Link to this definition">¶</a></dt>
635
+ <dd><p>Load a task based on name, arg_hash and function_hash</p>
636
+ <dl class="field-list simple">
637
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
638
+ <dd class="field-odd"><ul class="simple">
639
+ <li><p><strong>name</strong> – Node name</p></li>
640
+ <li><p><strong>arg_hash</strong> – Hash of the arguments</p></li>
641
+ <li><p><strong>function_hash</strong> – Hash of the function</p></li>
642
+ </ul>
643
+ </dd>
644
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
645
+ <dd class="field-even"><p>The found NodeRegistry instance or None</p>
646
+ </dd>
647
+ </dl>
648
+ </dd></dl>
649
+
650
+ <dl class="py method">
651
+ <dt class="sig sig-object py" id="simstack.util.db.Database.load_task_by_id">
652
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">load_task_by_id</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">task_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">ObjectId</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="simstack.models.html#simstack.models.node_registry.NodeRegistry" title="simstack.models.node_registry.NodeRegistry"><span class="pre">NodeRegistry</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/db.html#Database.load_task_by_id"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.db.Database.load_task_by_id" title="Link to this definition">¶</a></dt>
653
+ <dd><p>Load a task based on its ID</p>
654
+ <dl class="field-list simple">
655
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
656
+ <dd class="field-odd"><p><strong>task_id</strong> – The task ID</p>
657
+ </dd>
658
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
659
+ <dd class="field-even"><p>The found NodeRegistry instance or None</p>
660
+ </dd>
661
+ </dl>
662
+ </dd></dl>
663
+
664
+ <dl class="py method">
665
+ <dt class="sig sig-object py" id="simstack.util.db.Database.load_waiting_tasks_for_resource">
666
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">load_waiting_tasks_for_resource</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">resource</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="simstack.models.html#simstack.models.node_registry.NodeRegistry" title="simstack.models.node_registry.NodeRegistry"><span class="pre">NodeRegistry</span></a><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/db.html#Database.load_waiting_tasks_for_resource"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.db.Database.load_waiting_tasks_for_resource" title="Link to this definition">¶</a></dt>
667
+ <dd><p>Load all waiting tasks for a specific resource</p>
668
+ <dl class="field-list simple">
669
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
670
+ <dd class="field-odd"><p><strong>resource</strong> – The resource name</p>
671
+ </dd>
672
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
673
+ <dd class="field-even"><p>List of matching NodeRegistry instances</p>
674
+ </dd>
675
+ </dl>
676
+ </dd></dl>
677
+
678
+ <dl class="py method">
679
+ <dt class="sig sig-object py" id="simstack.util.db.Database.ping">
680
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">ping</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Any</span></span></span><a class="reference internal" href="../../_modules/simstack/util/db.html#Database.ping"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.db.Database.ping" title="Link to this definition">¶</a></dt>
681
+ <dd></dd></dl>
682
+
683
+ <dl class="py property">
684
+ <dt class="sig sig-object py" id="simstack.util.db.Database.raw_database">
685
+ <span class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">raw_database</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">Any</span></span><a class="headerlink" href="#simstack.util.db.Database.raw_database" title="Link to this definition">¶</a></dt>
686
+ <dd></dd></dl>
687
+
688
+ <dl class="py method">
689
+ <dt class="sig sig-object py" id="simstack.util.db.Database.reset_database">
690
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">reset_database</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/db.html#Database.reset_database"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.db.Database.reset_database" title="Link to this definition">¶</a></dt>
691
+ <dd><p>Reset the database by dropping all collections and recreating them</p>
692
+ </dd></dl>
693
+
694
+ <dl class="py method">
695
+ <dt class="sig sig-object py" id="simstack.util.db.Database.save">
696
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">save</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Any</span></span></span><a class="reference internal" href="../../_modules/simstack/util/db.html#Database.save"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.db.Database.save" title="Link to this definition">¶</a></dt>
697
+ <dd></dd></dl>
698
+
699
+ <dl class="py method">
700
+ <dt class="sig sig-object py" id="simstack.util.db.Database.save_unchecked">
701
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">save_unchecked</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Any</span></span></span><a class="reference internal" href="../../_modules/simstack/util/db.html#Database.save_unchecked"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.db.Database.save_unchecked" title="Link to this definition">¶</a></dt>
702
+ <dd></dd></dl>
703
+
704
+ <dl class="py property">
705
+ <dt class="sig sig-object py" id="simstack.util.db.Database.server_token">
706
+ <span class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">server_token</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><a class="headerlink" href="#simstack.util.db.Database.server_token" title="Link to this definition">¶</a></dt>
707
+ <dd></dd></dl>
708
+
709
+ <dl class="py property">
710
+ <dt class="sig sig-object py" id="simstack.util.db.Database.server_url">
711
+ <span class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">server_url</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><a class="headerlink" href="#simstack.util.db.Database.server_url" title="Link to this definition">¶</a></dt>
712
+ <dd></dd></dl>
713
+
714
+ <dl class="py method">
715
+ <dt class="sig sig-object py" id="simstack.util.db.Database.stats">
716
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">stats</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Any</span></span></span><a class="reference internal" href="../../_modules/simstack/util/db.html#Database.stats"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.db.Database.stats" title="Link to this definition">¶</a></dt>
717
+ <dd></dd></dl>
718
+
719
+ </dd></dl>
720
+
721
+ <dl class="py function">
722
+ <dt class="sig sig-object py" id="simstack.util.db.find_all_artifacts_for_database">
723
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.db.</span></span><span class="sig-name descname"><span class="pre">find_all_artifacts_for_database</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">database</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#simstack.util.db.Database" title="simstack.util.db.Database"><span class="pre">Database</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">node_registry</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Any</span></span></span><a class="reference internal" href="../../_modules/simstack/util/db.html#find_all_artifacts_for_database"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.db.find_all_artifacts_for_database" title="Link to this definition">¶</a></dt>
724
+ <dd></dd></dl>
725
+
726
+ </section>
727
+ <section id="module-simstack.util.db_logger">
728
+ <span id="simstack-util-db-logger-module"></span><h2>simstack.util.db_logger module<a class="headerlink" href="#module-simstack.util.db_logger" title="Link to this heading">¶</a></h2>
729
+ <dl class="py class">
730
+ <dt class="sig sig-object py" id="simstack.util.db_logger.DBLogHandler">
731
+ <span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.db_logger.</span></span><span class="sig-name descname"><span class="pre">DBLogHandler</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">connection_string</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">db_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">collection_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'logs'</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/db_logger.html#DBLogHandler"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.db_logger.DBLogHandler" title="Link to this definition">¶</a></dt>
732
+ <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">Handler</span></code></p>
733
+ <p>Logging handler that stores logs in MongoDB using pymongo.</p>
734
+ <dl class="py method">
735
+ <dt class="sig sig-object py" id="simstack.util.db_logger.DBLogHandler.close">
736
+ <span class="sig-name descname"><span class="pre">close</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/db_logger.html#DBLogHandler.close"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.db_logger.DBLogHandler.close" title="Link to this definition">¶</a></dt>
737
+ <dd><p>Close the MongoDB client connection.</p>
738
+ </dd></dl>
739
+
740
+ <dl class="py method">
741
+ <dt class="sig sig-object py" id="simstack.util.db_logger.DBLogHandler.create_log_entry">
742
+ <span class="sig-name descname"><span class="pre">create_log_entry</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">record</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">LogRecord</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/db_logger.html#DBLogHandler.create_log_entry"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.db_logger.DBLogHandler.create_log_entry" title="Link to this definition">¶</a></dt>
743
+ <dd></dd></dl>
744
+
745
+ <dl class="py method">
746
+ <dt class="sig sig-object py" id="simstack.util.db_logger.DBLogHandler.emit">
747
+ <span class="sig-name descname"><span class="pre">emit</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">record</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">LogRecord</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/db_logger.html#DBLogHandler.emit"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.db_logger.DBLogHandler.emit" title="Link to this definition">¶</a></dt>
748
+ <dd><p>Process a log record by converting it to a log entry and inserting it into MongoDB.</p>
749
+ </dd></dl>
750
+
751
+ </dd></dl>
752
+
753
+ <dl class="py function">
754
+ <dt class="sig sig-object py" id="simstack.util.db_logger.extract_resource_id">
755
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.db_logger.</span></span><span class="sig-name descname"><span class="pre">extract_resource_id</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">message</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/db_logger.html#extract_resource_id"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.db_logger.extract_resource_id" title="Link to this definition">¶</a></dt>
756
+ <dd><p>Extract resource ID from log message.</p>
757
+ </dd></dl>
758
+
759
+ <dl class="py function">
760
+ <dt class="sig sig-object py" id="simstack.util.db_logger.extract_task_id">
761
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.db_logger.</span></span><span class="sig-name descname"><span class="pre">extract_task_id</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">message</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/db_logger.html#extract_task_id"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.db_logger.extract_task_id" title="Link to this definition">¶</a></dt>
762
+ <dd><p>Extract task ID from log message.</p>
763
+ </dd></dl>
764
+
765
+ </section>
766
+ <section id="module-simstack.util.default_from_dict">
767
+ <span id="simstack-util-default-from-dict-module"></span><h2>simstack.util.default_from_dict module<a class="headerlink" href="#module-simstack.util.default_from_dict" title="Link to this heading">¶</a></h2>
768
+ <dl class="py function">
769
+ <dt class="sig sig-object py" id="simstack.util.default_from_dict.default_from_dict">
770
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.default_from_dict.</span></span><span class="sig-name descname"><span class="pre">default_from_dict</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cls_method</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">dict</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Any</span></span></span><a class="reference internal" href="../../_modules/simstack/util/default_from_dict.html#default_from_dict"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.default_from_dict.default_from_dict" title="Link to this definition">¶</a></dt>
771
+ <dd><p>Create an instance of the model from a dictionary.
772
+ Handles nested models and enum values.</p>
773
+ </dd></dl>
774
+
775
+ <dl class="py function">
776
+ <dt class="sig sig-object py" id="simstack.util.default_from_dict.default_from_model">
777
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.default_from_dict.</span></span><span class="sig-name descname"><span class="pre">default_from_model</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cls_method</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">model</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Model</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Model</span></span></span><a class="reference internal" href="../../_modules/simstack/util/default_from_dict.html#default_from_model"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.default_from_dict.default_from_model" title="Link to this definition">¶</a></dt>
778
+ <dd></dd></dl>
779
+
780
+ </section>
781
+ <section id="module-simstack.util.directory_iterator">
782
+ <span id="simstack-util-directory-iterator-module"></span><h2>simstack.util.directory_iterator module<a class="headerlink" href="#module-simstack.util.directory_iterator" title="Link to this heading">¶</a></h2>
783
+ <dl class="py class">
784
+ <dt class="sig sig-object py" id="simstack.util.directory_iterator.DirectoryPath">
785
+ <span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.directory_iterator.</span></span><span class="sig-name descname"><span class="pre">DirectoryPath</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">root_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">excluded_patterns</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">file_extensions</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/directory_iterator.html#DirectoryPath"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.directory_iterator.DirectoryPath" title="Link to this definition">¶</a></dt>
786
+ <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
787
+ <p>Represents a directory path with excluded subdirectory patterns and provides iteration capabilities.</p>
788
+ <dl class="py method">
789
+ <dt class="sig sig-object py" id="simstack.util.directory_iterator.DirectoryPath.add_excluded_pattern">
790
+ <span class="sig-name descname"><span class="pre">add_excluded_pattern</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">pattern</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/directory_iterator.html#DirectoryPath.add_excluded_pattern"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.directory_iterator.DirectoryPath.add_excluded_pattern" title="Link to this definition">¶</a></dt>
791
+ <dd><p>Add an exclusion pattern.</p>
792
+ <dl class="field-list simple">
793
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
794
+ <dd class="field-odd"><p><strong>pattern</strong> – Pattern to exclude</p>
795
+ </dd>
796
+ </dl>
797
+ </dd></dl>
798
+
799
+ <dl class="py method">
800
+ <dt class="sig sig-object py" id="simstack.util.directory_iterator.DirectoryPath.get_directories_list">
801
+ <span class="sig-name descname"><span class="pre">get_directories_list</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Path</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/directory_iterator.html#DirectoryPath.get_directories_list"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.directory_iterator.DirectoryPath.get_directories_list" title="Link to this definition">¶</a></dt>
802
+ <dd><p>Get a list of all directories matching the criteria.</p>
803
+ <dl class="field-list simple">
804
+ <dt class="field-odd">Returns<span class="colon">:</span></dt>
805
+ <dd class="field-odd"><p>List of Path objects</p>
806
+ </dd>
807
+ </dl>
808
+ </dd></dl>
809
+
810
+ <dl class="py method">
811
+ <dt class="sig sig-object py" id="simstack.util.directory_iterator.DirectoryPath.get_files_list">
812
+ <span class="sig-name descname"><span class="pre">get_files_list</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Path</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/directory_iterator.html#DirectoryPath.get_files_list"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.directory_iterator.DirectoryPath.get_files_list" title="Link to this definition">¶</a></dt>
813
+ <dd><p>Get a list of all files matching the criteria.</p>
814
+ <dl class="field-list simple">
815
+ <dt class="field-odd">Returns<span class="colon">:</span></dt>
816
+ <dd class="field-odd"><p>List of Path objects</p>
817
+ </dd>
818
+ </dl>
819
+ </dd></dl>
820
+
821
+ <dl class="py method">
822
+ <dt class="sig sig-object py" id="simstack.util.directory_iterator.DirectoryPath.iterate_directories">
823
+ <span class="sig-name descname"><span class="pre">iterate_directories</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Iterator</span><span class="p"><span class="pre">[</span></span><span class="pre">Path</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/directory_iterator.html#DirectoryPath.iterate_directories"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.directory_iterator.DirectoryPath.iterate_directories" title="Link to this definition">¶</a></dt>
824
+ <dd><p>Iterate over all directories in the directory tree, respecting exclusion patterns.</p>
825
+ <dl class="field-list simple">
826
+ <dt class="field-odd">Yields<span class="colon">:</span></dt>
827
+ <dd class="field-odd"><p>Path objects for each directory found</p>
828
+ </dd>
829
+ </dl>
830
+ </dd></dl>
831
+
832
+ <dl class="py method">
833
+ <dt class="sig sig-object py" id="simstack.util.directory_iterator.DirectoryPath.iterate_files">
834
+ <span class="sig-name descname"><span class="pre">iterate_files</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Iterator</span><span class="p"><span class="pre">[</span></span><span class="pre">Path</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/directory_iterator.html#DirectoryPath.iterate_files"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.directory_iterator.DirectoryPath.iterate_files" title="Link to this definition">¶</a></dt>
835
+ <dd><p>Iterate over all files in the directory tree, respecting exclusion patterns.</p>
836
+ <dl class="field-list simple">
837
+ <dt class="field-odd">Yields<span class="colon">:</span></dt>
838
+ <dd class="field-odd"><p>Path objects for each file found</p>
839
+ </dd>
840
+ </dl>
841
+ </dd></dl>
842
+
843
+ <dl class="py method">
844
+ <dt class="sig sig-object py" id="simstack.util.directory_iterator.DirectoryPath.remove_excluded_pattern">
845
+ <span class="sig-name descname"><span class="pre">remove_excluded_pattern</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">pattern</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/directory_iterator.html#DirectoryPath.remove_excluded_pattern"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.directory_iterator.DirectoryPath.remove_excluded_pattern" title="Link to this definition">¶</a></dt>
846
+ <dd><p>Remove an exclusion pattern.</p>
847
+ <dl class="field-list simple">
848
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
849
+ <dd class="field-odd"><p><strong>pattern</strong> – Pattern to remove</p>
850
+ </dd>
851
+ </dl>
852
+ </dd></dl>
853
+
854
+ </dd></dl>
855
+
856
+ <dl class="py function">
857
+ <dt class="sig sig-object py" id="simstack.util.directory_iterator.find_python_files_with_exclusions">
858
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.directory_iterator.</span></span><span class="sig-name descname"><span class="pre">find_python_files_with_exclusions</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">root_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">excluded_patterns</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Path</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/directory_iterator.html#find_python_files_with_exclusions"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.directory_iterator.find_python_files_with_exclusions" title="Link to this definition">¶</a></dt>
859
+ <dd><p>Find Python files using the DirectoryPath class with exclusions.</p>
860
+ <dl class="field-list simple">
861
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
862
+ <dd class="field-odd"><ul class="simple">
863
+ <li><p><strong>root_path</strong> – Root directory to search</p></li>
864
+ <li><p><strong>excluded_patterns</strong> – Patterns to exclude</p></li>
865
+ </ul>
866
+ </dd>
867
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
868
+ <dd class="field-even"><p>List of Python file paths</p>
869
+ </dd>
870
+ </dl>
871
+ </dd></dl>
872
+
873
+ </section>
874
+ <section id="module-simstack.util.docstring_parser">
875
+ <span id="simstack-util-docstring-parser-module"></span><h2>simstack.util.docstring_parser module<a class="headerlink" href="#module-simstack.util.docstring_parser" title="Link to this heading">¶</a></h2>
876
+ <dl class="py class">
877
+ <dt class="sig sig-object py" id="simstack.util.docstring_parser.DocstringParser">
878
+ <span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.docstring_parser.</span></span><span class="sig-name descname"><span class="pre">DocstringParser</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">docstring</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/docstring_parser.html#DocstringParser"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.docstring_parser.DocstringParser" title="Link to this definition">¶</a></dt>
879
+ <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
880
+ <p>Parse a docstring into structured components.</p>
881
+ <p>All component getters return None when the corresponding section is not present.
882
+ Supported sections:</p>
883
+ <blockquote>
884
+ <div><ul class="simple">
885
+ <li><p>Args: / Parameters:</p></li>
886
+ <li><p>Returns:</p></li>
887
+ <li><p>SimstackResult:</p></li>
888
+ <li><p>CalledNodes:</p></li>
889
+ <li><p>Raises:</p></li>
890
+ </ul>
891
+ </div></blockquote>
892
+ <dl class="py method">
893
+ <dt class="sig sig-object py" id="simstack.util.docstring_parser.DocstringParser.as_dict">
894
+ <span class="sig-name descname"><span class="pre">as_dict</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/docstring_parser.html#DocstringParser.as_dict"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.docstring_parser.DocstringParser.as_dict" title="Link to this definition">¶</a></dt>
895
+ <dd><p>Backward-compatible structure (always includes keys),
896
+ while still using the None-returning component getters internally.</p>
897
+ </dd></dl>
898
+
899
+ <dl class="py method">
900
+ <dt class="sig sig-object py" id="simstack.util.docstring_parser.DocstringParser.called_nodes">
901
+ <span class="sig-name descname"><span class="pre">called_nodes</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/docstring_parser.html#DocstringParser.called_nodes"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.docstring_parser.DocstringParser.called_nodes" title="Link to this definition">¶</a></dt>
902
+ <dd></dd></dl>
903
+
904
+ <dl class="py method">
905
+ <dt class="sig sig-object py" id="simstack.util.docstring_parser.DocstringParser.description">
906
+ <span class="sig-name descname"><span class="pre">description</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/docstring_parser.html#DocstringParser.description"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.docstring_parser.DocstringParser.description" title="Link to this definition">¶</a></dt>
907
+ <dd></dd></dl>
908
+
909
+ <dl class="py method">
910
+ <dt class="sig sig-object py" id="simstack.util.docstring_parser.DocstringParser.params">
911
+ <span class="sig-name descname"><span class="pre">params</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/docstring_parser.html#DocstringParser.params"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.docstring_parser.DocstringParser.params" title="Link to this definition">¶</a></dt>
912
+ <dd></dd></dl>
913
+
914
+ <dl class="py method">
915
+ <dt class="sig sig-object py" id="simstack.util.docstring_parser.DocstringParser.raises">
916
+ <span class="sig-name descname"><span class="pre">raises</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/docstring_parser.html#DocstringParser.raises"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.docstring_parser.DocstringParser.raises" title="Link to this definition">¶</a></dt>
917
+ <dd></dd></dl>
918
+
919
+ <dl class="py method">
920
+ <dt class="sig sig-object py" id="simstack.util.docstring_parser.DocstringParser.returns">
921
+ <span class="sig-name descname"><span class="pre">returns</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/docstring_parser.html#DocstringParser.returns"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.docstring_parser.DocstringParser.returns" title="Link to this definition">¶</a></dt>
922
+ <dd></dd></dl>
923
+
924
+ <dl class="py method">
925
+ <dt class="sig sig-object py" id="simstack.util.docstring_parser.DocstringParser.simstack_results">
926
+ <span class="sig-name descname"><span class="pre">simstack_results</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/docstring_parser.html#DocstringParser.simstack_results"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.docstring_parser.DocstringParser.simstack_results" title="Link to this definition">¶</a></dt>
927
+ <dd></dd></dl>
928
+
929
+ </dd></dl>
930
+
931
+ <dl class="py function">
932
+ <dt class="sig sig-object py" id="simstack.util.docstring_parser.parse_docstring">
933
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.docstring_parser.</span></span><span class="sig-name descname"><span class="pre">parse_docstring</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">docstring</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/docstring_parser.html#parse_docstring"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.docstring_parser.parse_docstring" title="Link to this definition">¶</a></dt>
934
+ <dd><p>Backward-compatible wrapper around DocstringParser.</p>
935
+ <p>Prefer using DocstringParser directly when you want per-section access with
936
+ None when a section is missing.</p>
937
+ </dd></dl>
938
+
939
+ </section>
940
+ <section id="module-simstack.util.file_hashing">
941
+ <span id="simstack-util-file-hashing-module"></span><h2>simstack.util.file_hashing module<a class="headerlink" href="#module-simstack.util.file_hashing" title="Link to this heading">¶</a></h2>
942
+ <dl class="py function">
943
+ <dt class="sig sig-object py" id="simstack.util.file_hashing.hash_file">
944
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.file_hashing.</span></span><span class="sig-name descname"><span class="pre">hash_file</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">file_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">algorithm</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'sha256'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">chunk_size</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">8192</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/simstack/util/file_hashing.html#hash_file"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.file_hashing.hash_file" title="Link to this definition">¶</a></dt>
945
+ <dd><p>Calculate hash of a file on disk.</p>
946
+ <dl class="field-list simple">
947
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
948
+ <dd class="field-odd"><ul class="simple">
949
+ <li><p><strong>file_path</strong> – Path to the file</p></li>
950
+ <li><p><strong>algorithm</strong> – Hash algorithm (md5, sha1, sha256, etc.)</p></li>
951
+ <li><p><strong>chunk_size</strong> – Size of chunks to read</p></li>
952
+ </ul>
953
+ </dd>
954
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
955
+ <dd class="field-even"><p>Hexadecimal digest of the hash</p>
956
+ </dd>
957
+ <dt class="field-odd">Return type<span class="colon">:</span></dt>
958
+ <dd class="field-odd"><p>str</p>
959
+ </dd>
960
+ </dl>
961
+ </dd></dl>
962
+
963
+ <dl class="py function">
964
+ <dt class="sig sig-object py" id="simstack.util.file_hashing.hash_file_object">
965
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.file_hashing.</span></span><span class="sig-name descname"><span class="pre">hash_file_object</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">file_obj</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">BinaryIO</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">algorithm</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'sha256'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">chunk_size</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">8192</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/simstack/util/file_hashing.html#hash_file_object"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.file_hashing.hash_file_object" title="Link to this definition">¶</a></dt>
966
+ <dd><p>Calculate hash of a file-like object.</p>
967
+ <dl class="field-list simple">
968
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
969
+ <dd class="field-odd"><ul class="simple">
970
+ <li><p><strong>file_obj</strong> – File-like object (must be in binary mode)</p></li>
971
+ <li><p><strong>algorithm</strong> – Hash algorithm (md5, sha1, sha256, etc.)</p></li>
972
+ <li><p><strong>chunk_size</strong> – Size of chunks to read</p></li>
973
+ </ul>
974
+ </dd>
975
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
976
+ <dd class="field-even"><p>Hexadecimal digest of the hash</p>
977
+ </dd>
978
+ <dt class="field-odd">Return type<span class="colon">:</span></dt>
979
+ <dd class="field-odd"><p>str</p>
980
+ </dd>
981
+ </dl>
982
+ </dd></dl>
983
+
984
+ <dl class="py function">
985
+ <dt class="sig sig-object py" id="simstack.util.file_hashing.hash_string">
986
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.file_hashing.</span></span><span class="sig-name descname"><span class="pre">hash_string</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">string</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">algorithm</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'sha256'</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/simstack/util/file_hashing.html#hash_string"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.file_hashing.hash_string" title="Link to this definition">¶</a></dt>
987
+ <dd></dd></dl>
988
+
989
+ </section>
990
+ <section id="module-simstack.util.file_transfer_client">
991
+ <span id="simstack-util-file-transfer-client-module"></span><h2>simstack.util.file_transfer_client module<a class="headerlink" href="#module-simstack.util.file_transfer_client" title="Link to this heading">¶</a></h2>
992
+ <dl class="py class">
993
+ <dt class="sig sig-object py" id="simstack.util.file_transfer_client.DownloadResult">
994
+ <span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.file_transfer_client.</span></span><span class="sig-name descname"><span class="pre">DownloadResult</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="s"><span class="pre">'Path'</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">size_bytes</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="s"><span class="pre">'int'</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">checksum_sha256</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="s"><span class="pre">'str'</span></span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/file_transfer_client.html#DownloadResult"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.file_transfer_client.DownloadResult" title="Link to this definition">¶</a></dt>
995
+ <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
996
+ <dl class="py attribute">
997
+ <dt class="sig sig-object py" id="simstack.util.file_transfer_client.DownloadResult.checksum_sha256">
998
+ <span class="sig-name descname"><span class="pre">checksum_sha256</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></span><a class="headerlink" href="#simstack.util.file_transfer_client.DownloadResult.checksum_sha256" title="Link to this definition">¶</a></dt>
999
+ <dd></dd></dl>
1000
+
1001
+ <dl class="py attribute">
1002
+ <dt class="sig sig-object py" id="simstack.util.file_transfer_client.DownloadResult.path">
1003
+ <span class="sig-name descname"><span class="pre">path</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">Path</span></span><a class="headerlink" href="#simstack.util.file_transfer_client.DownloadResult.path" title="Link to this definition">¶</a></dt>
1004
+ <dd></dd></dl>
1005
+
1006
+ <dl class="py attribute">
1007
+ <dt class="sig sig-object py" id="simstack.util.file_transfer_client.DownloadResult.size_bytes">
1008
+ <span class="sig-name descname"><span class="pre">size_bytes</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span></span><a class="headerlink" href="#simstack.util.file_transfer_client.DownloadResult.size_bytes" title="Link to this definition">¶</a></dt>
1009
+ <dd></dd></dl>
1010
+
1011
+ </dd></dl>
1012
+
1013
+ <dl class="py class">
1014
+ <dt class="sig sig-object py" id="simstack.util.file_transfer_client.FileTransferClient">
1015
+ <span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.file_transfer_client.</span></span><span class="sig-name descname"><span class="pre">FileTransferClient</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">server_url</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">runner_token</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">timeout_seconds</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">60</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/file_transfer_client.html#FileTransferClient"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.file_transfer_client.FileTransferClient" title="Link to this definition">¶</a></dt>
1016
+ <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
1017
+ <p>Small standard-library HTTP client for runner-to-server file transfer.</p>
1018
+ <p>It intentionally avoids adding a mandatory requests/httpx dependency to the
1019
+ runner environment while still streaming upload and download bodies.</p>
1020
+ <dl class="py attribute">
1021
+ <dt class="sig sig-object py" id="simstack.util.file_transfer_client.FileTransferClient.chunk_size">
1022
+ <span class="sig-name descname"><span class="pre">chunk_size</span></span><span class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">1048576</span></span><a class="headerlink" href="#simstack.util.file_transfer_client.FileTransferClient.chunk_size" title="Link to this definition">¶</a></dt>
1023
+ <dd></dd></dl>
1024
+
1025
+ <dl class="py method">
1026
+ <dt class="sig sig-object py" id="simstack.util.file_transfer_client.FileTransferClient.complete_transfer">
1027
+ <span class="sig-name descname"><span class="pre">complete_transfer</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">transfer_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">target_resource_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">target_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">size_bytes</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">checksum_sha256</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/file_transfer_client.html#FileTransferClient.complete_transfer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.file_transfer_client.FileTransferClient.complete_transfer" title="Link to this definition">¶</a></dt>
1028
+ <dd></dd></dl>
1029
+
1030
+ <dl class="py method">
1031
+ <dt class="sig sig-object py" id="simstack.util.file_transfer_client.FileTransferClient.create_transfer">
1032
+ <span class="sig-name descname"><span class="pre">create_transfer</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">file_stack_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">source_file_instance_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">source_resource_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">target_resource_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">request_type</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'runner_to_runner'</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/file_transfer_client.html#FileTransferClient.create_transfer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.file_transfer_client.FileTransferClient.create_transfer" title="Link to this definition">¶</a></dt>
1033
+ <dd></dd></dl>
1034
+
1035
+ <dl class="py method">
1036
+ <dt class="sig sig-object py" id="simstack.util.file_transfer_client.FileTransferClient.download_file">
1037
+ <span class="sig-name descname"><span class="pre">download_file</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">transfer_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">target_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Path</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#simstack.util.file_transfer_client.DownloadResult" title="simstack.util.file_transfer_client.DownloadResult"><span class="pre">DownloadResult</span></a></span></span><a class="reference internal" href="../../_modules/simstack/util/file_transfer_client.html#FileTransferClient.download_file"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.file_transfer_client.FileTransferClient.download_file" title="Link to this definition">¶</a></dt>
1038
+ <dd></dd></dl>
1039
+
1040
+ <dl class="py method">
1041
+ <dt class="sig sig-object py" id="simstack.util.file_transfer_client.FileTransferClient.fail_transfer">
1042
+ <span class="sig-name descname"><span class="pre">fail_transfer</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">transfer_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">error_message</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">error_code</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/file_transfer_client.html#FileTransferClient.fail_transfer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.file_transfer_client.FileTransferClient.fail_transfer" title="Link to this definition">¶</a></dt>
1043
+ <dd></dd></dl>
1044
+
1045
+ <dl class="py method">
1046
+ <dt class="sig sig-object py" id="simstack.util.file_transfer_client.FileTransferClient.from_context">
1047
+ <span class="property"><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">from_context</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">required</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#simstack.util.file_transfer_client.FileTransferClient" title="simstack.util.file_transfer_client.FileTransferClient"><span class="pre">FileTransferClient</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/file_transfer_client.html#FileTransferClient.from_context"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.file_transfer_client.FileTransferClient.from_context" title="Link to this definition">¶</a></dt>
1048
+ <dd><p>Build a client from environment variables or context config attributes.</p>
1049
+ <p>Environment variables are preferred because runner tokens are machine
1050
+ credentials and should not be stored in FileStack/FileInstance objects.</p>
1051
+ </dd></dl>
1052
+
1053
+ <dl class="py method">
1054
+ <dt class="sig sig-object py" id="simstack.util.file_transfer_client.FileTransferClient.get_transfer">
1055
+ <span class="sig-name descname"><span class="pre">get_transfer</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">transfer_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/file_transfer_client.html#FileTransferClient.get_transfer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.file_transfer_client.FileTransferClient.get_transfer" title="Link to this definition">¶</a></dt>
1056
+ <dd></dd></dl>
1057
+
1058
+ <dl class="py method">
1059
+ <dt class="sig sig-object py" id="simstack.util.file_transfer_client.FileTransferClient.list_transfers">
1060
+ <span class="sig-name descname"><span class="pre">list_transfers</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">role</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'source'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">status</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'created'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">limit</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">20</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/file_transfer_client.html#FileTransferClient.list_transfers"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.file_transfer_client.FileTransferClient.list_transfers" title="Link to this definition">¶</a></dt>
1061
+ <dd></dd></dl>
1062
+
1063
+ <dl class="py method">
1064
+ <dt class="sig sig-object py" id="simstack.util.file_transfer_client.FileTransferClient.upload_file">
1065
+ <span class="sig-name descname"><span class="pre">upload_file</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">transfer_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Path</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/file_transfer_client.html#FileTransferClient.upload_file"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.file_transfer_client.FileTransferClient.upload_file" title="Link to this definition">¶</a></dt>
1066
+ <dd></dd></dl>
1067
+
1068
+ <dl class="py method">
1069
+ <dt class="sig sig-object py" id="simstack.util.file_transfer_client.FileTransferClient.wait_until_uploaded">
1070
+ <span class="sig-name descname"><span class="pre">wait_until_uploaded</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">transfer_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">timeout_seconds</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">poll_interval_seconds</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/file_transfer_client.html#FileTransferClient.wait_until_uploaded"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.file_transfer_client.FileTransferClient.wait_until_uploaded" title="Link to this definition">¶</a></dt>
1071
+ <dd></dd></dl>
1072
+
1073
+ </dd></dl>
1074
+
1075
+ <dl class="py exception">
1076
+ <dt class="sig sig-object py" id="simstack.util.file_transfer_client.FileTransferError">
1077
+ <span class="property"><span class="k"><span class="pre">exception</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.file_transfer_client.</span></span><span class="sig-name descname"><span class="pre">FileTransferError</span></span><a class="reference internal" href="../../_modules/simstack/util/file_transfer_client.html#FileTransferError"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.file_transfer_client.FileTransferError" title="Link to this definition">¶</a></dt>
1078
+ <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">RuntimeError</span></code></p>
1079
+ <p>Raised when the SimStack file transfer API cannot satisfy a request.</p>
1080
+ </dd></dl>
1081
+
1082
+ <dl class="py function">
1083
+ <dt class="sig sig-object py" id="simstack.util.file_transfer_client.first_available_remote_location">
1084
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.file_transfer_client.</span></span><span class="sig-name descname"><span class="pre">first_available_remote_location</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">locations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Iterable</span><span class="p"><span class="pre">[</span></span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">local_resource</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Any</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/file_transfer_client.html#first_available_remote_location"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.file_transfer_client.first_available_remote_location" title="Link to this definition">¶</a></dt>
1085
+ <dd></dd></dl>
1086
+
1087
+ <dl class="py function">
1088
+ <dt class="sig sig-object py" id="simstack.util.file_transfer_client.path_for_file_instance">
1089
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.file_transfer_client.</span></span><span class="sig-name descname"><span class="pre">path_for_file_instance</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">workdir</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Path</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/simstack/util/file_transfer_client.html#path_for_file_instance"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.file_transfer_client.path_for_file_instance" title="Link to this definition">¶</a></dt>
1090
+ <dd></dd></dl>
1091
+
1092
+ <dl class="py function">
1093
+ <dt class="sig sig-object py" id="simstack.util.file_transfer_client.resolve_instance_path">
1094
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.file_transfer_client.</span></span><span class="sig-name descname"><span class="pre">resolve_instance_path</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">raw_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">workdir</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Path</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Path</span></span></span><a class="reference internal" href="../../_modules/simstack/util/file_transfer_client.html#resolve_instance_path"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.file_transfer_client.resolve_instance_path" title="Link to this definition">¶</a></dt>
1095
+ <dd></dd></dl>
1096
+
1097
+ <dl class="py function">
1098
+ <dt class="sig sig-object py" id="simstack.util.file_transfer_client.resource_name">
1099
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.file_transfer_client.</span></span><span class="sig-name descname"><span class="pre">resource_name</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/simstack/util/file_transfer_client.html#resource_name"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.file_transfer_client.resource_name" title="Link to this definition">¶</a></dt>
1100
+ <dd></dd></dl>
1101
+
1102
+ <dl class="py function">
1103
+ <dt class="sig sig-object py" id="simstack.util.file_transfer_client.transfer_resource_name">
1104
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.file_transfer_client.</span></span><span class="sig-name descname"><span class="pre">transfer_resource_name</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/simstack/util/file_transfer_client.html#transfer_resource_name"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.file_transfer_client.transfer_resource_name" title="Link to this definition">¶</a></dt>
1105
+ <dd><p>Return the concrete resource name used by file transfer endpoints.</p>
1106
+ <p>SimStack uses the symbolic resource “self” for nodes that run on the
1107
+ current resource. The server transfer API cannot authorize “self” because
1108
+ runner tokens are scoped to concrete resources such as “local” or
1109
+ “int-nano”. When possible, resolve “self” through the configured runner
1110
+ token resource before sending transfer requests or storing file instances.</p>
1111
+ </dd></dl>
1112
+
1113
+ </section>
1114
+ <section id="module-simstack.util.files">
1115
+ <span id="simstack-util-files-module"></span><h2>simstack.util.files module<a class="headerlink" href="#module-simstack.util.files" title="Link to this heading">¶</a></h2>
1116
+ <dl class="py class">
1117
+ <dt class="sig sig-object py" id="simstack.util.files.FfspecFile">
1118
+ <span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.files.</span></span><span class="sig-name descname"><span class="pre">FfspecFile</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">&lt;odmantic.field.ODMFieldInfo</span> <span class="pre">object&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">&lt;odmantic.field.ODMFieldInfo</span> <span class="pre">object&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">extension</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">&lt;odmantic.field.ODMFieldInfo</span> <span class="pre">object&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">protocol</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">&lt;odmantic.field.ODMFieldInfo</span> <span class="pre">object&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">host</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">&lt;odmantic.field.ODMFieldInfo</span> <span class="pre">object&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">port</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">&lt;odmantic.field.ODMFieldInfo</span> <span class="pre">object&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">username</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">&lt;odmantic.field.ODMFieldInfo</span> <span class="pre">object&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ssh_auth</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#simstack.util.files.SshAuthMethod" title="simstack.util.files.SshAuthMethod"><span class="pre">SshAuthMethod</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">&lt;odmantic.field.ODMFieldInfo</span> <span class="pre">object&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">size</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">&lt;odmantic.field.ODMFieldInfo</span> <span class="pre">object&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">created_at</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">datetime</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">&lt;odmantic.field.ODMFieldInfo</span> <span class="pre">object&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">modified_at</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">datetime</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">&lt;odmantic.field.ODMFieldInfo</span> <span class="pre">object&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">storage_options</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict[str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">~typing.Any]</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">&lt;odmantic.field.ODMFieldInfo</span> <span class="pre">object&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">checksum</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">&lt;odmantic.field.ODMFieldInfo</span> <span class="pre">object&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">content_type</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">&lt;odmantic.field.ODMFieldInfo</span> <span class="pre">object&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">parent_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">&lt;odmantic.field.ODMFieldInfo</span> <span class="pre">object&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">is_directory</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">&lt;odmantic.field.ODMFieldInfo</span> <span class="pre">object&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">children</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">&lt;odmantic.field.ODMFieldInfo</span> <span class="pre">object&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">last_accessed</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">datetime</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">&lt;odmantic.field.ODMFieldInfo</span> <span class="pre">object&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">access_count</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">&lt;odmantic.field.ODMFieldInfo</span> <span class="pre">object&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">metadata</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict[str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">~typing.Any]</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">&lt;odmantic.field.ODMFieldInfo</span> <span class="pre">object&gt;</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/files.html#FfspecFile"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.files.FfspecFile" title="Link to this definition">¶</a></dt>
1119
+ <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">BaseModel</span></code></p>
1120
+ <p>Representation of a file with protocol-specific details, metadata, and utility methods
1121
+ for remote or local operations.</p>
1122
+ <p>This class facilitates working with files across different storage protocols such as
1123
+ local filesystem, SFTP, SCP, or cloud-based protocols. It provides attributes for
1124
+ authenticating, accessing, and manipulating files as well as methods for operations
1125
+ like copying files, creating URIs, and testing connections.</p>
1126
+ <dl class="field-list simple">
1127
+ <dt class="field-odd">Variables<span class="colon">:</span></dt>
1128
+ <dd class="field-odd"><ul class="simple">
1129
+ <li><p><strong>path</strong> – Full path to the file.</p></li>
1130
+ <li><p><strong>name</strong> – Name of the file.</p></li>
1131
+ <li><p><strong>extension</strong> – File extension.</p></li>
1132
+ <li><p><strong>protocol</strong> – Storage protocol (e.g., ‘file’, ‘s3’, ‘http’, ‘sftp’, ‘scp’).</p></li>
1133
+ <li><p><strong>host</strong> – Host name or address where the file is located.</p></li>
1134
+ <li><p><strong>port</strong> – Port number if applicable.</p></li>
1135
+ <li><p><strong>username</strong> – Username for authentication if required.</p></li>
1136
+ <li><p><strong>ssh_auth</strong> – SSH authentication configuration.</p></li>
1137
+ <li><p><strong>size</strong> – Size of the file in bytes.</p></li>
1138
+ <li><p><strong>created_at</strong> – Creation timestamp.</p></li>
1139
+ <li><p><strong>modified_at</strong> – Last modification timestamp.</p></li>
1140
+ <li><p><strong>storage_options</strong> – Protocol-specific storage options.</p></li>
1141
+ <li><p><strong>checksum</strong> – File content checksum.</p></li>
1142
+ <li><p><strong>content_type</strong> – MIME type of the file.</p></li>
1143
+ <li><p><strong>parent_path</strong> – Path to parent directory.</p></li>
1144
+ <li><p><strong>is_directory</strong> – Whether this is a directory.</p></li>
1145
+ <li><p><strong>children</strong> – Child file/directory paths if this is a directory.</p></li>
1146
+ <li><p><strong>last_accessed</strong> – Last access timestamp.</p></li>
1147
+ <li><p><strong>access_count</strong> – Number of times this file has been accessed.</p></li>
1148
+ <li><p><strong>metadata</strong> – Additional metadata as key-value pairs.</p></li>
1149
+ </ul>
1150
+ </dd>
1151
+ </dl>
1152
+ <dl class="py attribute">
1153
+ <dt class="sig sig-object py" id="simstack.util.files.FfspecFile.access_count">
1154
+ <span class="sig-name descname"><span class="pre">access_count</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span></span><a class="headerlink" href="#simstack.util.files.FfspecFile.access_count" title="Link to this definition">¶</a></dt>
1155
+ <dd></dd></dl>
1156
+
1157
+ <dl class="py method">
1158
+ <dt class="sig sig-object py" id="simstack.util.files.FfspecFile.can_connect">
1159
+ <span class="sig-name descname"><span class="pre">can_connect</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="../../_modules/simstack/util/files.html#FfspecFile.can_connect"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.files.FfspecFile.can_connect" title="Link to this definition">¶</a></dt>
1160
+ <dd><p>Test if we can connect to the remote host using the provided credentials.</p>
1161
+ <dl class="field-list simple">
1162
+ <dt class="field-odd">Returns<span class="colon">:</span></dt>
1163
+ <dd class="field-odd"><p>True if connection is successful, False otherwise</p>
1164
+ </dd>
1165
+ <dt class="field-even">Return type<span class="colon">:</span></dt>
1166
+ <dd class="field-even"><p>bool</p>
1167
+ </dd>
1168
+ </dl>
1169
+ </dd></dl>
1170
+
1171
+ <dl class="py attribute">
1172
+ <dt class="sig sig-object py" id="simstack.util.files.FfspecFile.checksum">
1173
+ <span class="sig-name descname"><span class="pre">checksum</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><a class="headerlink" href="#simstack.util.files.FfspecFile.checksum" title="Link to this definition">¶</a></dt>
1174
+ <dd></dd></dl>
1175
+
1176
+ <dl class="py attribute">
1177
+ <dt class="sig sig-object py" id="simstack.util.files.FfspecFile.children">
1178
+ <span class="sig-name descname"><span class="pre">children</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span><a class="headerlink" href="#simstack.util.files.FfspecFile.children" title="Link to this definition">¶</a></dt>
1179
+ <dd></dd></dl>
1180
+
1181
+ <dl class="py attribute">
1182
+ <dt class="sig sig-object py" id="simstack.util.files.FfspecFile.content_type">
1183
+ <span class="sig-name descname"><span class="pre">content_type</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><a class="headerlink" href="#simstack.util.files.FfspecFile.content_type" title="Link to this definition">¶</a></dt>
1184
+ <dd></dd></dl>
1185
+
1186
+ <dl class="py method">
1187
+ <dt class="sig sig-object py" id="simstack.util.files.FfspecFile.copy_from_local">
1188
+ <span class="sig-name descname"><span class="pre">copy_from_local</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">local_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/files.html#FfspecFile.copy_from_local"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.files.FfspecFile.copy_from_local" title="Link to this definition">¶</a></dt>
1189
+ <dd><p>Copy a local file to the remote location represented by this model.</p>
1190
+ <dl class="field-list simple">
1191
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
1192
+ <dd class="field-odd"><p><strong>local_path</strong> – Path to the local file</p>
1193
+ </dd>
1194
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
1195
+ <dd class="field-even"><p>None</p>
1196
+ </dd>
1197
+ </dl>
1198
+ </dd></dl>
1199
+
1200
+ <dl class="py method">
1201
+ <dt class="sig sig-object py" id="simstack.util.files.FfspecFile.copy_to_local">
1202
+ <span class="sig-name descname"><span class="pre">copy_to_local</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">local_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/simstack/util/files.html#FfspecFile.copy_to_local"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.files.FfspecFile.copy_to_local" title="Link to this definition">¶</a></dt>
1203
+ <dd><p>Copy the remote file to a local path.</p>
1204
+ <dl class="field-list simple">
1205
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
1206
+ <dd class="field-odd"><p><strong>local_path</strong> – Local path to copy the file to. If None, a temporary file is created.</p>
1207
+ </dd>
1208
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
1209
+ <dd class="field-even"><p>Path to the local copy of the file</p>
1210
+ </dd>
1211
+ <dt class="field-odd">Return type<span class="colon">:</span></dt>
1212
+ <dd class="field-odd"><p>str</p>
1213
+ </dd>
1214
+ </dl>
1215
+ </dd></dl>
1216
+
1217
+ <dl class="py attribute">
1218
+ <dt class="sig sig-object py" id="simstack.util.files.FfspecFile.created_at">
1219
+ <span class="sig-name descname"><span class="pre">created_at</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">datetime</span></span><a class="headerlink" href="#simstack.util.files.FfspecFile.created_at" title="Link to this definition">¶</a></dt>
1220
+ <dd></dd></dl>
1221
+
1222
+ <dl class="py attribute">
1223
+ <dt class="sig sig-object py" id="simstack.util.files.FfspecFile.extension">
1224
+ <span class="sig-name descname"><span class="pre">extension</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></span><a class="headerlink" href="#simstack.util.files.FfspecFile.extension" title="Link to this definition">¶</a></dt>
1225
+ <dd></dd></dl>
1226
+
1227
+ <dl class="py method">
1228
+ <dt class="sig sig-object py" id="simstack.util.files.FfspecFile.from_ssh_key">
1229
+ <span class="property"><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">from_ssh_key</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">host</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">username</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">key_filename</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">protocol</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'sftp'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">port</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">22</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">key_passphrase</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">host_key_policy</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'auto_add'</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#simstack.util.files.FfspecFile" title="simstack.util.files.FfspecFile"><span class="pre">FfspecFile</span></a></span></span><a class="reference internal" href="../../_modules/simstack/util/files.html#FfspecFile.from_ssh_key"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.files.FfspecFile.from_ssh_key" title="Link to this definition">¶</a></dt>
1230
+ <dd><p>Create a FfspecFile instance with SSH key authentication.</p>
1231
+ <dl class="field-list simple">
1232
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
1233
+ <dd class="field-odd"><ul class="simple">
1234
+ <li><p><strong>host</strong> – Remote host name or IP address</p></li>
1235
+ <li><p><strong>path</strong> – Path to the file on the remote host</p></li>
1236
+ <li><p><strong>username</strong> – SSH username for authentication</p></li>
1237
+ <li><p><strong>key_filename</strong> – Path to the SSH private key file</p></li>
1238
+ <li><p><strong>protocol</strong> – Protocol to use, either ‘sftp’ or ‘scp’ (default: ‘sftp’)</p></li>
1239
+ <li><p><strong>port</strong> – SSH port on the remote host (default: 22)</p></li>
1240
+ <li><p><strong>key_passphrase</strong> – Passphrase for the SSH key if it’s encrypted (default: None)</p></li>
1241
+ <li><p><strong>host_key_policy</strong> – Host key policy - ‘auto_add’, ‘strict’, or ‘ask’ (default: ‘auto_add’)</p></li>
1242
+ <li><p><strong>**kwargs</strong> – Additional attributes to set on the model</p></li>
1243
+ </ul>
1244
+ </dd>
1245
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
1246
+ <dd class="field-even"><p>A new instance representing the remote file</p>
1247
+ </dd>
1248
+ <dt class="field-odd">Return type<span class="colon">:</span></dt>
1249
+ <dd class="field-odd"><p><a class="reference internal" href="#simstack.util.files.FfspecFile" title="simstack.util.files.FfspecFile">FfspecFile</a></p>
1250
+ </dd>
1251
+ </dl>
1252
+ </dd></dl>
1253
+
1254
+ <dl class="py method">
1255
+ <dt class="sig sig-object py" id="simstack.util.files.FfspecFile.get_filesystem">
1256
+ <span class="sig-name descname"><span class="pre">get_filesystem</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/files.html#FfspecFile.get_filesystem"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.files.FfspecFile.get_filesystem" title="Link to this definition">¶</a></dt>
1257
+ <dd><p>Create and return a fsspec filesystem object for this file.</p>
1258
+ <dl class="field-list simple">
1259
+ <dt class="field-odd">Returns<span class="colon">:</span></dt>
1260
+ <dd class="field-odd"><p>An fsspec filesystem instance</p>
1261
+ </dd>
1262
+ <dt class="field-even">Return type<span class="colon">:</span></dt>
1263
+ <dd class="field-even"><p>object</p>
1264
+ </dd>
1265
+ </dl>
1266
+ </dd></dl>
1267
+
1268
+ <dl class="py attribute">
1269
+ <dt class="sig sig-object py" id="simstack.util.files.FfspecFile.host">
1270
+ <span class="sig-name descname"><span class="pre">host</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><a class="headerlink" href="#simstack.util.files.FfspecFile.host" title="Link to this definition">¶</a></dt>
1271
+ <dd></dd></dl>
1272
+
1273
+ <dl class="py attribute">
1274
+ <dt class="sig sig-object py" id="simstack.util.files.FfspecFile.is_directory">
1275
+ <span class="sig-name descname"><span class="pre">is_directory</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></span><a class="headerlink" href="#simstack.util.files.FfspecFile.is_directory" title="Link to this definition">¶</a></dt>
1276
+ <dd></dd></dl>
1277
+
1278
+ <dl class="py attribute">
1279
+ <dt class="sig sig-object py" id="simstack.util.files.FfspecFile.last_accessed">
1280
+ <span class="sig-name descname"><span class="pre">last_accessed</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">datetime</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><a class="headerlink" href="#simstack.util.files.FfspecFile.last_accessed" title="Link to this definition">¶</a></dt>
1281
+ <dd></dd></dl>
1282
+
1283
+ <dl class="py attribute">
1284
+ <dt class="sig sig-object py" id="simstack.util.files.FfspecFile.metadata">
1285
+ <span class="sig-name descname"><span class="pre">metadata</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span><a class="headerlink" href="#simstack.util.files.FfspecFile.metadata" title="Link to this definition">¶</a></dt>
1286
+ <dd></dd></dl>
1287
+
1288
+ <dl class="py attribute">
1289
+ <dt class="sig sig-object py" id="simstack.util.files.FfspecFile.model_config">
1290
+ <span class="sig-name descname"><span class="pre">model_config</span></span><span class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></span><a class="headerlink" href="#simstack.util.files.FfspecFile.model_config" title="Link to this definition">¶</a></dt>
1291
+ <dd><p>Configuration for the model, should be a dictionary conforming to [<cite>ConfigDict</cite>][pydantic.config.ConfigDict].</p>
1292
+ </dd></dl>
1293
+
1294
+ <dl class="py attribute">
1295
+ <dt class="sig sig-object py" id="simstack.util.files.FfspecFile.modified_at">
1296
+ <span class="sig-name descname"><span class="pre">modified_at</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">datetime</span></span><a class="headerlink" href="#simstack.util.files.FfspecFile.modified_at" title="Link to this definition">¶</a></dt>
1297
+ <dd></dd></dl>
1298
+
1299
+ <dl class="py attribute">
1300
+ <dt class="sig sig-object py" id="simstack.util.files.FfspecFile.name">
1301
+ <span class="sig-name descname"><span class="pre">name</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></span><a class="headerlink" href="#simstack.util.files.FfspecFile.name" title="Link to this definition">¶</a></dt>
1302
+ <dd></dd></dl>
1303
+
1304
+ <dl class="py attribute">
1305
+ <dt class="sig sig-object py" id="simstack.util.files.FfspecFile.parent_path">
1306
+ <span class="sig-name descname"><span class="pre">parent_path</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><a class="headerlink" href="#simstack.util.files.FfspecFile.parent_path" title="Link to this definition">¶</a></dt>
1307
+ <dd></dd></dl>
1308
+
1309
+ <dl class="py attribute">
1310
+ <dt class="sig sig-object py" id="simstack.util.files.FfspecFile.path">
1311
+ <span class="sig-name descname"><span class="pre">path</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></span><a class="headerlink" href="#simstack.util.files.FfspecFile.path" title="Link to this definition">¶</a></dt>
1312
+ <dd></dd></dl>
1313
+
1314
+ <dl class="py attribute">
1315
+ <dt class="sig sig-object py" id="simstack.util.files.FfspecFile.port">
1316
+ <span class="sig-name descname"><span class="pre">port</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><a class="headerlink" href="#simstack.util.files.FfspecFile.port" title="Link to this definition">¶</a></dt>
1317
+ <dd></dd></dl>
1318
+
1319
+ <dl class="py attribute">
1320
+ <dt class="sig sig-object py" id="simstack.util.files.FfspecFile.protocol">
1321
+ <span class="sig-name descname"><span class="pre">protocol</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></span><a class="headerlink" href="#simstack.util.files.FfspecFile.protocol" title="Link to this definition">¶</a></dt>
1322
+ <dd></dd></dl>
1323
+
1324
+ <dl class="py attribute">
1325
+ <dt class="sig sig-object py" id="simstack.util.files.FfspecFile.size">
1326
+ <span class="sig-name descname"><span class="pre">size</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span></span><a class="headerlink" href="#simstack.util.files.FfspecFile.size" title="Link to this definition">¶</a></dt>
1327
+ <dd></dd></dl>
1328
+
1329
+ <dl class="py attribute">
1330
+ <dt class="sig sig-object py" id="simstack.util.files.FfspecFile.ssh_auth">
1331
+ <span class="sig-name descname"><span class="pre">ssh_auth</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference internal" href="#simstack.util.files.SshAuthMethod" title="simstack.util.files.SshAuthMethod"><span class="pre">SshAuthMethod</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><a class="headerlink" href="#simstack.util.files.FfspecFile.ssh_auth" title="Link to this definition">¶</a></dt>
1332
+ <dd></dd></dl>
1333
+
1334
+ <dl class="py attribute">
1335
+ <dt class="sig sig-object py" id="simstack.util.files.FfspecFile.storage_options">
1336
+ <span class="sig-name descname"><span class="pre">storage_options</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span><a class="headerlink" href="#simstack.util.files.FfspecFile.storage_options" title="Link to this definition">¶</a></dt>
1337
+ <dd></dd></dl>
1338
+
1339
+ <dl class="py method">
1340
+ <dt class="sig sig-object py" id="simstack.util.files.FfspecFile.to_uri">
1341
+ <span class="sig-name descname"><span class="pre">to_uri</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/simstack/util/files.html#FfspecFile.to_uri"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.files.FfspecFile.to_uri" title="Link to this definition">¶</a></dt>
1342
+ <dd><p>Convert this model to a URI/URL representation.</p>
1343
+ <p>Note: SSH private key information is not included in the URI.</p>
1344
+ <dl class="field-list simple">
1345
+ <dt class="field-odd">Returns<span class="colon">:</span></dt>
1346
+ <dd class="field-odd"><p>URI string representing this file</p>
1347
+ </dd>
1348
+ <dt class="field-even">Return type<span class="colon">:</span></dt>
1349
+ <dd class="field-even"><p>str</p>
1350
+ </dd>
1351
+ </dl>
1352
+ </dd></dl>
1353
+
1354
+ <dl class="py attribute">
1355
+ <dt class="sig sig-object py" id="simstack.util.files.FfspecFile.username">
1356
+ <span class="sig-name descname"><span class="pre">username</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><a class="headerlink" href="#simstack.util.files.FfspecFile.username" title="Link to this definition">¶</a></dt>
1357
+ <dd></dd></dl>
1358
+
1359
+ </dd></dl>
1360
+
1361
+ <dl class="py class">
1362
+ <dt class="sig sig-object py" id="simstack.util.files.SshAuthMethod">
1363
+ <span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.files.</span></span><span class="sig-name descname"><span class="pre">SshAuthMethod</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">auth_type</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">&lt;odmantic.field.ODMFieldInfo</span> <span class="pre">object&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">password</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">&lt;odmantic.field.ODMFieldInfo</span> <span class="pre">object&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">key_filename</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">&lt;odmantic.field.ODMFieldInfo</span> <span class="pre">object&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">key_passphrase</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">&lt;odmantic.field.ODMFieldInfo</span> <span class="pre">object&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">allow_host_key_add</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">&lt;odmantic.field.ODMFieldInfo</span> <span class="pre">object&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">host_key_policy</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">&lt;odmantic.field.ODMFieldInfo</span> <span class="pre">object&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">known_hosts_file</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">&lt;odmantic.field.ODMFieldInfo</span> <span class="pre">object&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">**extra_data</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/files.html#SshAuthMethod"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.files.SshAuthMethod" title="Link to this definition">¶</a></dt>
1364
+ <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">BaseModel</span></code></p>
1365
+ <dl class="py attribute">
1366
+ <dt class="sig sig-object py" id="simstack.util.files.SshAuthMethod.allow_host_key_add">
1367
+ <span class="sig-name descname"><span class="pre">allow_host_key_add</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></span><a class="headerlink" href="#simstack.util.files.SshAuthMethod.allow_host_key_add" title="Link to this definition">¶</a></dt>
1368
+ <dd></dd></dl>
1369
+
1370
+ <dl class="py attribute">
1371
+ <dt class="sig sig-object py" id="simstack.util.files.SshAuthMethod.auth_type">
1372
+ <span class="sig-name descname"><span class="pre">auth_type</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></span><a class="headerlink" href="#simstack.util.files.SshAuthMethod.auth_type" title="Link to this definition">¶</a></dt>
1373
+ <dd></dd></dl>
1374
+
1375
+ <dl class="py attribute">
1376
+ <dt class="sig sig-object py" id="simstack.util.files.SshAuthMethod.host_key_policy">
1377
+ <span class="sig-name descname"><span class="pre">host_key_policy</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></span><a class="headerlink" href="#simstack.util.files.SshAuthMethod.host_key_policy" title="Link to this definition">¶</a></dt>
1378
+ <dd></dd></dl>
1379
+
1380
+ <dl class="py attribute">
1381
+ <dt class="sig sig-object py" id="simstack.util.files.SshAuthMethod.key_filename">
1382
+ <span class="sig-name descname"><span class="pre">key_filename</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><a class="headerlink" href="#simstack.util.files.SshAuthMethod.key_filename" title="Link to this definition">¶</a></dt>
1383
+ <dd></dd></dl>
1384
+
1385
+ <dl class="py attribute">
1386
+ <dt class="sig sig-object py" id="simstack.util.files.SshAuthMethod.key_passphrase">
1387
+ <span class="sig-name descname"><span class="pre">key_passphrase</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><a class="headerlink" href="#simstack.util.files.SshAuthMethod.key_passphrase" title="Link to this definition">¶</a></dt>
1388
+ <dd></dd></dl>
1389
+
1390
+ <dl class="py attribute">
1391
+ <dt class="sig sig-object py" id="simstack.util.files.SshAuthMethod.known_hosts_file">
1392
+ <span class="sig-name descname"><span class="pre">known_hosts_file</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><a class="headerlink" href="#simstack.util.files.SshAuthMethod.known_hosts_file" title="Link to this definition">¶</a></dt>
1393
+ <dd></dd></dl>
1394
+
1395
+ <dl class="py attribute">
1396
+ <dt class="sig sig-object py" id="simstack.util.files.SshAuthMethod.model_config">
1397
+ <span class="sig-name descname"><span class="pre">model_config</span></span><span class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{'extra':</span> <span class="pre">'allow'}</span></span><a class="headerlink" href="#simstack.util.files.SshAuthMethod.model_config" title="Link to this definition">¶</a></dt>
1398
+ <dd><p>Configuration for the model, should be a dictionary conforming to [<cite>ConfigDict</cite>][pydantic.config.ConfigDict].</p>
1399
+ </dd></dl>
1400
+
1401
+ <dl class="py attribute">
1402
+ <dt class="sig sig-object py" id="simstack.util.files.SshAuthMethod.password">
1403
+ <span class="sig-name descname"><span class="pre">password</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><a class="headerlink" href="#simstack.util.files.SshAuthMethod.password" title="Link to this definition">¶</a></dt>
1404
+ <dd></dd></dl>
1405
+
1406
+ </dd></dl>
1407
+
1408
+ </section>
1409
+ <section id="module-simstack.util.find_python_files">
1410
+ <span id="simstack-util-find-python-files-module"></span><h2>simstack.util.find_python_files module<a class="headerlink" href="#module-simstack.util.find_python_files" title="Link to this heading">¶</a></h2>
1411
+ <dl class="py function">
1412
+ <dt class="sig sig-object py" id="simstack.util.find_python_files.find_python_files">
1413
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.find_python_files.</span></span><span class="sig-name descname"><span class="pre">find_python_files</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">directory</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/find_python_files.html#find_python_files"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.find_python_files.find_python_files" title="Link to this definition">¶</a></dt>
1414
+ <dd><p>Returns full paths of all .py files in the given directory and its subdirectories,
1415
+ excluding __init__.py files.</p>
1416
+ <dl class="field-list simple">
1417
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
1418
+ <dd class="field-odd"><p><strong>directory</strong> – The root directory to search from</p>
1419
+ </dd>
1420
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
1421
+ <dd class="field-even"><p>List of absolute file paths to all .py files that aren’t __init__.py</p>
1422
+ </dd>
1423
+ </dl>
1424
+ </dd></dl>
1425
+
1426
+ </section>
1427
+ <section id="module-simstack.util.generate_ui_schema">
1428
+ <span id="simstack-util-generate-ui-schema-module"></span><h2>simstack.util.generate_ui_schema module<a class="headerlink" href="#module-simstack.util.generate_ui_schema" title="Link to this heading">¶</a></h2>
1429
+ <dl class="py function">
1430
+ <dt class="sig sig-object py" id="simstack.util.generate_ui_schema.generate_ui_schema">
1431
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.generate_ui_schema.</span></span><span class="sig-name descname"><span class="pre">generate_ui_schema</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cls</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/generate_ui_schema.html#generate_ui_schema"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.generate_ui_schema.generate_ui_schema" title="Link to this definition">¶</a></dt>
1432
+ <dd><p>Generates a UI schema that uses GenericForm for fields with ui_schema function.
1433
+ Also preserves any existing UI schema configurations from the class.</p>
1434
+ <dl class="field-list simple">
1435
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
1436
+ <dd class="field-odd"><p><strong>cls</strong> – The model class to generate UI schema for</p>
1437
+ </dd>
1438
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
1439
+ <dd class="field-even"><p>The generated UI schema</p>
1440
+ </dd>
1441
+ <dt class="field-odd">Return type<span class="colon">:</span></dt>
1442
+ <dd class="field-odd"><p>dict</p>
1443
+ </dd>
1444
+ </dl>
1445
+ </dd></dl>
1446
+
1447
+ </section>
1448
+ <section id="module-simstack.util.generic_list_mixin">
1449
+ <span id="simstack-util-generic-list-mixin-module"></span><h2>simstack.util.generic_list_mixin module<a class="headerlink" href="#module-simstack.util.generic_list_mixin" title="Link to this heading">¶</a></h2>
1450
+ <dl class="py class">
1451
+ <dt class="sig sig-object py" id="simstack.util.generic_list_mixin.GenericListMixin">
1452
+ <span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.generic_list_mixin.</span></span><span class="sig-name descname"><span class="pre">GenericListMixin</span></span><a class="reference internal" href="../../_modules/simstack/util/generic_list_mixin.html#GenericListMixin"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.generic_list_mixin.GenericListMixin" title="Link to this definition">¶</a></dt>
1453
+ <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">Generic</span></code>[<code class="xref py py-obj docutils literal notranslate"><span class="pre">T</span></code>]</p>
1454
+ <p>Mixin class containing common functionality for list operations.</p>
1455
+ <dl class="simple">
1456
+ <dt>Notes on typing:</dt><dd><ul class="simple">
1457
+ <li><p>Pure list-like operations (append/extend/…) are fully generic over <cite>T</cite>.</p></li>
1458
+ <li><p>Convenience helpers like <cite>find()</cite> / <cite>filter_by_size()</cite> rely on optional attributes
1459
+ (e.g. <cite>.name</cite>, <cite>.size</cite>). For arbitrary <cite>T</cite>, we use <cite>getattr()</cite> to keep runtime
1460
+ behavior flexible while remaining type-safe-ish.</p></li>
1461
+ </ul>
1462
+ </dd>
1463
+ </dl>
1464
+ <dl class="py method">
1465
+ <dt class="sig sig-object py" id="simstack.util.generic_list_mixin.GenericListMixin.append">
1466
+ <span class="sig-name descname"><span class="pre">append</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">elements</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">T</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/generic_list_mixin.html#GenericListMixin.append"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.generic_list_mixin.GenericListMixin.append" title="Link to this definition">¶</a></dt>
1467
+ <dd></dd></dl>
1468
+
1469
+ <dl class="py method">
1470
+ <dt class="sig sig-object py" id="simstack.util.generic_list_mixin.GenericListMixin.clear">
1471
+ <span class="sig-name descname"><span class="pre">clear</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/generic_list_mixin.html#GenericListMixin.clear"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.generic_list_mixin.GenericListMixin.clear" title="Link to this definition">¶</a></dt>
1472
+ <dd></dd></dl>
1473
+
1474
+ <dl class="py method">
1475
+ <dt class="sig sig-object py" id="simstack.util.generic_list_mixin.GenericListMixin.copy">
1476
+ <span class="sig-name descname"><span class="pre">copy</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">T</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/generic_list_mixin.html#GenericListMixin.copy"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.generic_list_mixin.GenericListMixin.copy" title="Link to this definition">¶</a></dt>
1477
+ <dd></dd></dl>
1478
+
1479
+ <dl class="py method">
1480
+ <dt class="sig sig-object py" id="simstack.util.generic_list_mixin.GenericListMixin.count">
1481
+ <span class="sig-name descname"><span class="pre">count</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">elements</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">T</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">int</span></span></span><a class="reference internal" href="../../_modules/simstack/util/generic_list_mixin.html#GenericListMixin.count"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.generic_list_mixin.GenericListMixin.count" title="Link to this definition">¶</a></dt>
1482
+ <dd></dd></dl>
1483
+
1484
+ <dl class="py method">
1485
+ <dt class="sig sig-object py" id="simstack.util.generic_list_mixin.GenericListMixin.extend">
1486
+ <span class="sig-name descname"><span class="pre">extend</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">elements</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">T</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Iterable</span><span class="p"><span class="pre">[</span></span><span class="pre">T</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><a class="reference internal" href="#simstack.util.generic_list_mixin.GenericListMixin" title="simstack.util.generic_list_mixin.GenericListMixin"><span class="pre">GenericListMixin</span></a><span class="p"><span class="pre">[</span></span><span class="pre">T</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/generic_list_mixin.html#GenericListMixin.extend"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.generic_list_mixin.GenericListMixin.extend" title="Link to this definition">¶</a></dt>
1487
+ <dd></dd></dl>
1488
+
1489
+ <dl class="py method">
1490
+ <dt class="sig sig-object py" id="simstack.util.generic_list_mixin.GenericListMixin.filter_by_property">
1491
+ <span class="sig-name descname"><span class="pre">filter_by_property</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">property_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">value</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Iterator</span><span class="p"><span class="pre">[</span></span><span class="pre">T</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/generic_list_mixin.html#GenericListMixin.filter_by_property"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.generic_list_mixin.GenericListMixin.filter_by_property" title="Link to this definition">¶</a></dt>
1492
+ <dd></dd></dl>
1493
+
1494
+ <dl class="py method">
1495
+ <dt class="sig sig-object py" id="simstack.util.generic_list_mixin.GenericListMixin.filter_by_size">
1496
+ <span class="sig-name descname"><span class="pre">filter_by_size</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">min_size</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_size</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Iterator</span><span class="p"><span class="pre">[</span></span><span class="pre">T</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/generic_list_mixin.html#GenericListMixin.filter_by_size"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.generic_list_mixin.GenericListMixin.filter_by_size" title="Link to this definition">¶</a></dt>
1497
+ <dd></dd></dl>
1498
+
1499
+ <dl class="py method">
1500
+ <dt class="sig sig-object py" id="simstack.util.generic_list_mixin.GenericListMixin.find">
1501
+ <span class="sig-name descname"><span class="pre">find</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">pattern</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">T</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/generic_list_mixin.html#GenericListMixin.find"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.generic_list_mixin.GenericListMixin.find" title="Link to this definition">¶</a></dt>
1502
+ <dd></dd></dl>
1503
+
1504
+ <dl class="py method">
1505
+ <dt class="sig sig-object py" id="simstack.util.generic_list_mixin.GenericListMixin.find_all">
1506
+ <span class="sig-name descname"><span class="pre">find_all</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">pattern</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Iterator</span><span class="p"><span class="pre">[</span></span><span class="pre">T</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/generic_list_mixin.html#GenericListMixin.find_all"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.generic_list_mixin.GenericListMixin.find_all" title="Link to this definition">¶</a></dt>
1507
+ <dd></dd></dl>
1508
+
1509
+ <dl class="py method">
1510
+ <dt class="sig sig-object py" id="simstack.util.generic_list_mixin.GenericListMixin.index">
1511
+ <span class="sig-name descname"><span class="pre">index</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">elements</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">T</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">start</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stop</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">int</span></span></span><a class="reference internal" href="../../_modules/simstack/util/generic_list_mixin.html#GenericListMixin.index"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.generic_list_mixin.GenericListMixin.index" title="Link to this definition">¶</a></dt>
1512
+ <dd></dd></dl>
1513
+
1514
+ <dl class="py method">
1515
+ <dt class="sig sig-object py" id="simstack.util.generic_list_mixin.GenericListMixin.insert">
1516
+ <span class="sig-name descname"><span class="pre">insert</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">index</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">elements</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">T</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/generic_list_mixin.html#GenericListMixin.insert"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.generic_list_mixin.GenericListMixin.insert" title="Link to this definition">¶</a></dt>
1517
+ <dd></dd></dl>
1518
+
1519
+ <dl class="py method">
1520
+ <dt class="sig sig-object py" id="simstack.util.generic_list_mixin.GenericListMixin.pop">
1521
+ <span class="sig-name descname"><span class="pre">pop</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">index</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">-1</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">T</span></span></span><a class="reference internal" href="../../_modules/simstack/util/generic_list_mixin.html#GenericListMixin.pop"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.generic_list_mixin.GenericListMixin.pop" title="Link to this definition">¶</a></dt>
1522
+ <dd></dd></dl>
1523
+
1524
+ <dl class="py method">
1525
+ <dt class="sig sig-object py" id="simstack.util.generic_list_mixin.GenericListMixin.remove">
1526
+ <span class="sig-name descname"><span class="pre">remove</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">elements</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">T</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/generic_list_mixin.html#GenericListMixin.remove"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.generic_list_mixin.GenericListMixin.remove" title="Link to this definition">¶</a></dt>
1527
+ <dd></dd></dl>
1528
+
1529
+ <dl class="py method">
1530
+ <dt class="sig sig-object py" id="simstack.util.generic_list_mixin.GenericListMixin.reverse">
1531
+ <span class="sig-name descname"><span class="pre">reverse</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/generic_list_mixin.html#GenericListMixin.reverse"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.generic_list_mixin.GenericListMixin.reverse" title="Link to this definition">¶</a></dt>
1532
+ <dd></dd></dl>
1533
+
1534
+ <dl class="py method">
1535
+ <dt class="sig sig-object py" id="simstack.util.generic_list_mixin.GenericListMixin.sort">
1536
+ <span class="sig-name descname"><span class="pre">sort</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">key</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">reverse</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/generic_list_mixin.html#GenericListMixin.sort"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.generic_list_mixin.GenericListMixin.sort" title="Link to this definition">¶</a></dt>
1537
+ <dd></dd></dl>
1538
+
1539
+ <dl class="py method">
1540
+ <dt class="sig sig-object py" id="simstack.util.generic_list_mixin.GenericListMixin.sort_by_name">
1541
+ <span class="sig-name descname"><span class="pre">sort_by_name</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">reverse</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/generic_list_mixin.html#GenericListMixin.sort_by_name"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.generic_list_mixin.GenericListMixin.sort_by_name" title="Link to this definition">¶</a></dt>
1542
+ <dd></dd></dl>
1543
+
1544
+ <dl class="py method">
1545
+ <dt class="sig sig-object py" id="simstack.util.generic_list_mixin.GenericListMixin.sort_by_size">
1546
+ <span class="sig-name descname"><span class="pre">sort_by_size</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">reverse</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/generic_list_mixin.html#GenericListMixin.sort_by_size"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.generic_list_mixin.GenericListMixin.sort_by_size" title="Link to this definition">¶</a></dt>
1547
+ <dd></dd></dl>
1548
+
1549
+ </dd></dl>
1550
+
1551
+ </section>
1552
+ <section id="module-simstack.util.geometry_utils">
1553
+ <span id="simstack-util-geometry-utils-module"></span><h2>simstack.util.geometry_utils module<a class="headerlink" href="#module-simstack.util.geometry_utils" title="Link to this heading">¶</a></h2>
1554
+ </section>
1555
+ <section id="module-simstack.util.get_module_path">
1556
+ <span id="simstack-util-get-module-path-module"></span><h2>simstack.util.get_module_path module<a class="headerlink" href="#module-simstack.util.get_module_path" title="Link to this heading">¶</a></h2>
1557
+ <dl class="py function">
1558
+ <dt class="sig sig-object py" id="simstack.util.get_module_path.get_module_path">
1559
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.get_module_path.</span></span><span class="sig-name descname"><span class="pre">get_module_path</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">file_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/get_module_path.html#get_module_path"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.get_module_path.get_module_path" title="Link to this definition">¶</a></dt>
1560
+ <dd></dd></dl>
1561
+
1562
+ </section>
1563
+ <section id="module-simstack.util.git_pull">
1564
+ <span id="simstack-util-git-pull-module"></span><h2>simstack.util.git_pull module<a class="headerlink" href="#module-simstack.util.git_pull" title="Link to this heading">¶</a></h2>
1565
+ <dl class="py function">
1566
+ <dt class="sig sig-object py" id="simstack.util.git_pull.git_pull_periodically">
1567
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.git_pull.</span></span><span class="sig-name descname"><span class="pre">git_pull_periodically</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">repo_path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">interval_minutes</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">log_file</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/git_pull.html#git_pull_periodically"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.git_pull.git_pull_periodically" title="Link to this definition">¶</a></dt>
1568
+ <dd><p>Performs git pull in the specified repository at regular intervals.</p>
1569
+ <dl class="field-list simple">
1570
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
1571
+ <dd class="field-odd"><ul class="simple">
1572
+ <li><p><strong>repo_path</strong> (<em>str</em>) – Path to the Git repository</p></li>
1573
+ <li><p><strong>interval_minutes</strong> (<em>int</em>) – Time interval between pulls in minutes</p></li>
1574
+ <li><p><strong>log_file</strong> (<em>str</em><em>, </em><em>optional</em>) – Path to log file. If None, logs to console.</p></li>
1575
+ </ul>
1576
+ </dd>
1577
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
1578
+ <dd class="field-even"><p>None</p>
1579
+ </dd>
1580
+ </dl>
1581
+ </dd></dl>
1582
+
1583
+ </section>
1584
+ <section id="module-simstack.util.git_repository_status">
1585
+ <span id="simstack-util-git-repository-status-module"></span><h2>simstack.util.git_repository_status module<a class="headerlink" href="#module-simstack.util.git_repository_status" title="Link to this heading">¶</a></h2>
1586
+ <dl class="py function">
1587
+ <dt class="sig sig-object py" id="simstack.util.git_repository_status.get_git_status">
1588
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.git_repository_status.</span></span><span class="sig-name descname"><span class="pre">get_git_status</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">repo_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Path</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">object</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/git_repository_status.html#get_git_status"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.git_repository_status.get_git_status" title="Link to this definition">¶</a></dt>
1589
+ <dd><p>Get the current Git short commit hash and whether the branch is up to date with its upstream.</p>
1590
+ <dl>
1591
+ <dt>Returns a dict:</dt><dd><dl class="simple">
1592
+ <dt>{</dt><dd><p>“short_hash”: Optional[str], # e.g., “a1b2c3d”, None if not a git repo
1593
+ “branch”: Optional[str], # current branch name or “HEAD” if detached, None if not a repo
1594
+ “up_to_date”: Optional[bool], # True/False if upstream exists, None if unknown/no upstream
1595
+ “ahead”: Optional[int], # commits ahead of upstream (0 if up to date), None if unknown
1596
+ “behind”: Optional[int], # commits behind upstream (0 if up to date), None if unknown</p>
1597
+ </dd>
1598
+ </dl>
1599
+ <p>}</p>
1600
+ </dd>
1601
+ </dl>
1602
+ </dd></dl>
1603
+
1604
+ </section>
1605
+ <section id="module-simstack.util.import_module">
1606
+ <span id="simstack-util-import-module-module"></span><h2>simstack.util.import_module module<a class="headerlink" href="#module-simstack.util.import_module" title="Link to this heading">¶</a></h2>
1607
+ <dl class="py function">
1608
+ <dt class="sig sig-object py" id="simstack.util.import_module.import_module_from_file">
1609
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.import_module.</span></span><span class="sig-name descname"><span class="pre">import_module_from_file</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">file_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">root_dir</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Path</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/import_module.html#import_module_from_file"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.import_module.import_module_from_file" title="Link to this definition">¶</a></dt>
1610
+ <dd><p>Import a Python file as a module.</p>
1611
+ <dl class="field-list simple">
1612
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
1613
+ <dd class="field-odd"><ul class="simple">
1614
+ <li><p><strong>root_dir</strong></p></li>
1615
+ <li><p><strong>file_path</strong> – Path object pointing to the Python file to import</p></li>
1616
+ </ul>
1617
+ </dd>
1618
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
1619
+ <dd class="field-even"><p>Imported module or None if import failed</p>
1620
+ </dd>
1621
+ </dl>
1622
+ </dd></dl>
1623
+
1624
+ </section>
1625
+ <section id="module-simstack.util.importer">
1626
+ <span id="simstack-util-importer-module"></span><h2>simstack.util.importer module<a class="headerlink" href="#module-simstack.util.importer" title="Link to this heading">¶</a></h2>
1627
+ <dl class="py function">
1628
+ <dt class="sig sig-object py" id="simstack.util.importer.import_class">
1629
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.importer.</span></span><span class="sig-name descname"><span class="pre">import_class</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">class_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">db</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#simstack.util.db.Database" title="simstack.util.db.Database"><span class="pre">Database</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Type</span><span class="p"><span class="pre">[</span></span><span class="pre">Model</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/importer.html#import_class"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.importer.import_class" title="Link to this definition">¶</a></dt>
1630
+ <dd><p>Dynamically import a class from a module using its full path.
1631
+ First tries to load the class from the database using ModelMapping</p>
1632
+ <p>A pickled version of the class is used primarily
1633
+ :param : param class_path: class_path: Dot notation path to the class (e.g. ‘models.submodule.ClassName’)
1634
+ :param : param db: db: Database object</p>
1635
+ <dl class="field-list simple">
1636
+ <dt class="field-odd">Returns<span class="colon">:</span></dt>
1637
+ <dd class="field-odd"><p>The imported class object or None if import fails</p>
1638
+ </dd>
1639
+ </dl>
1640
+ </dd></dl>
1641
+
1642
+ <dl class="py function">
1643
+ <dt class="sig sig-object py" id="simstack.util.importer.import_class_by_name">
1644
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.importer.</span></span><span class="sig-name descname"><span class="pre">import_class_by_name</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">class_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">db</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#simstack.util.db.Database" title="simstack.util.db.Database"><span class="pre">Database</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Type</span><span class="p"><span class="pre">[</span></span><span class="pre">Model</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/importer.html#import_class_by_name"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.importer.import_class_by_name" title="Link to this definition">¶</a></dt>
1645
+ <dd></dd></dl>
1646
+
1647
+ <dl class="py function">
1648
+ <dt class="sig sig-object py" id="simstack.util.importer.import_function">
1649
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.importer.</span></span><span class="sig-name descname"><span class="pre">import_function</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">function_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">db</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#simstack.util.db.Database" title="simstack.util.db.Database"><span class="pre">Database</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">task_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">ObjectId</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tolerate_missing_function</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">...</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/importer.html#import_function"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.importer.import_function" title="Link to this definition">¶</a></dt>
1650
+ <dd><p>Dynamically import a function from a module using its full path, including a migration mechanism.
1651
+ load the function information using NodeModel
1652
+ load the pickled version if it exists
1653
+ if there is no pickled version, use regular import.</p>
1654
+ <dl class="field-list simple">
1655
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
1656
+ <dd class="field-odd"><ul class="simple">
1657
+ <li><p><strong>function_path</strong> – Dot notation path to the function (e.g. ‘methods.submodule.function_name’)</p></li>
1658
+ <li><p><strong>db</strong> – Database object</p></li>
1659
+ <li><p><strong>task_id</strong> – Optional task id</p></li>
1660
+ <li><p><strong>tolerate_missing_function</strong> – If True, return None if function is not found, otherwise raise exception</p></li>
1661
+ </ul>
1662
+ </dd>
1663
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
1664
+ <dd class="field-even"><p>The imported function object or None if import fails</p>
1665
+ </dd>
1666
+ </dl>
1667
+ </dd></dl>
1668
+
1669
+ <dl class="py function">
1670
+ <dt class="sig sig-object py" id="simstack.util.importer.import_function_by_name">
1671
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.importer.</span></span><span class="sig-name descname"><span class="pre">import_function_by_name</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">function_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">db</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#simstack.util.db.Database" title="simstack.util.db.Database"><span class="pre">Database</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">task_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">ObjectId</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">...</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/importer.html#import_function_by_name"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.importer.import_function_by_name" title="Link to this definition">¶</a></dt>
1672
+ <dd></dd></dl>
1673
+
1674
+ </section>
1675
+ <section id="module-simstack.util.init_data_source">
1676
+ <span id="simstack-util-init-data-source-module"></span><h2>simstack.util.init_data_source module<a class="headerlink" href="#module-simstack.util.init_data_source" title="Link to this heading">¶</a></h2>
1677
+ <dl class="py function">
1678
+ <dt class="sig sig-object py" id="simstack.util.init_data_source.initialize_resource_from_db">
1679
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.init_data_source.</span></span><span class="sig-name descname"><span class="pre">initialize_resource_from_db</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">resource_str</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">db</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#simstack.util.db.Database" title="simstack.util.db.Database"><span class="pre">Database</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">workdir_self</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Path</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="simstack.models.html#simstack.models.resource_definition.ResourceDefinition" title="simstack.models.resource_definition.ResourceDefinition"><span class="pre">ResourceDefinition</span></a></span></span><a class="reference internal" href="../../_modules/simstack/util/init_data_source.html#initialize_resource_from_db"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.init_data_source.initialize_resource_from_db" title="Link to this definition">¶</a></dt>
1680
+ <dd></dd></dl>
1681
+
1682
+ </section>
1683
+ <section id="module-simstack.util.make_graph">
1684
+ <span id="simstack-util-make-graph-module"></span><h2>simstack.util.make_graph module<a class="headerlink" href="#module-simstack.util.make_graph" title="Link to this heading">¶</a></h2>
1685
+ <dl class="py function">
1686
+ <dt class="sig sig-object py" id="simstack.util.make_graph.model_to_graph_data">
1687
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.make_graph.</span></span><span class="sig-name descname"><span class="pre">model_to_graph_data</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">exclude_none</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">exclude_unset</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">exclude</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/make_graph.html#model_to_graph_data"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.make_graph.model_to_graph_data" title="Link to this definition">¶</a></dt>
1688
+ <dd><p>Checks if an odmantic Model contains fields that can be interpreted as graph data
1689
+ (multiple lists of the same length) and converts it to a format suitable for ag-graph.</p>
1690
+ <dl class="field-list simple">
1691
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
1692
+ <dd class="field-odd"><ul class="simple">
1693
+ <li><p><strong>model</strong> – An odmantic Model instance</p></li>
1694
+ <li><p><strong>exclude_none</strong> (<em>bool</em>) – Whether to exclude None values</p></li>
1695
+ <li><p><strong>exclude_unset</strong> (<em>bool</em>) – Whether to exclude unset values</p></li>
1696
+ <li><p><strong>exclude</strong> (<em>set</em>) – Fields to exclude</p></li>
1697
+ </ul>
1698
+ </dd>
1699
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
1700
+ <dd class="field-even"><p>A dictionary with graph data if the model contains compatible fields, otherwise None</p>
1701
+ </dd>
1702
+ <dt class="field-odd">Return type<span class="colon">:</span></dt>
1703
+ <dd class="field-odd"><p>dict</p>
1704
+ </dd>
1705
+ </dl>
1706
+ </dd></dl>
1707
+
1708
+ </section>
1709
+ <section id="module-simstack.util.make_table">
1710
+ <span id="simstack-util-make-table-module"></span><h2>simstack.util.make_table module<a class="headerlink" href="#module-simstack.util.make_table" title="Link to this heading">¶</a></h2>
1711
+ <dl class="py function">
1712
+ <dt class="sig sig-object py" id="simstack.util.make_table.create_column_def">
1713
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.make_table.</span></span><span class="sig-name descname"><span class="pre">create_column_def</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">field_name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">field_type</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">field_value</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">field_path</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/make_table.html#create_column_def"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.make_table.create_column_def" title="Link to this definition">¶</a></dt>
1714
+ <dd><p>Create a column definition for AG Grid based on field type and value.</p>
1715
+ <dl class="field-list simple">
1716
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
1717
+ <dd class="field-odd"><ul class="simple">
1718
+ <li><p><strong>field_name</strong> – Name of the field</p></li>
1719
+ <li><p><strong>field_type</strong> – Type of the field from model definition</p></li>
1720
+ <li><p><strong>field_value</strong> – Actual value of the field (can be None for class-based definitions)</p></li>
1721
+ <li><p><strong>field_path</strong> – Full path to the field (for nested structures)</p></li>
1722
+ </ul>
1723
+ </dd>
1724
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
1725
+ <dd class="field-even"><p>Column definition for AG Grid</p>
1726
+ </dd>
1727
+ <dt class="field-odd">Return type<span class="colon">:</span></dt>
1728
+ <dd class="field-odd"><p>dict</p>
1729
+ </dd>
1730
+ </dl>
1731
+ </dd></dl>
1732
+
1733
+ <dl class="py function">
1734
+ <dt class="sig sig-object py" id="simstack.util.make_table.is_pydantic_model">
1735
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.make_table.</span></span><span class="sig-name descname"><span class="pre">is_pydantic_model</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">obj</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/make_table.html#is_pydantic_model"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.make_table.is_pydantic_model" title="Link to this definition">¶</a></dt>
1736
+ <dd><p>Check if an object is a Pydantic model class.</p>
1737
+ <dl class="field-list simple">
1738
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
1739
+ <dd class="field-odd"><p><strong>obj</strong> – The object to check</p>
1740
+ </dd>
1741
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
1742
+ <dd class="field-even"><p>True if the object is a Pydantic model class, False otherwise</p>
1743
+ </dd>
1744
+ <dt class="field-odd">Return type<span class="colon">:</span></dt>
1745
+ <dd class="field-odd"><p>bool</p>
1746
+ </dd>
1747
+ </dl>
1748
+ </dd></dl>
1749
+
1750
+ <dl class="py function">
1751
+ <dt class="sig sig-object py" id="simstack.util.make_table.make_column_defs_helper">
1752
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.make_table.</span></span><span class="sig-name descname"><span class="pre">make_column_defs_helper</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_class</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">table_name</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_recursion_level</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">drop_id</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">current_level</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">visited</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">field_prefix</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">''</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/make_table.html#make_column_defs_helper"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.make_table.make_column_defs_helper" title="Link to this definition">¶</a></dt>
1753
+ <dd><p>Create column definitions for AG Grid based on a model class.
1754
+ Uses the same logic as table data generation but for model class.
1755
+ This is a helper function mapped to make_column_defs in simstack_model.
1756
+ The idea is that most classes can call the helper function but some classes might
1757
+ want to override it to return specific column definitions.</p>
1758
+ <dl class="field-list simple">
1759
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
1760
+ <dd class="field-odd"><ul class="simple">
1761
+ <li><p><strong>model_class</strong> – The model class to process</p></li>
1762
+ <li><p><strong>table_name</strong> – Optional name for the table (default: None, uses class name)</p></li>
1763
+ <li><p><strong>max_recursion_level</strong> – Maximum depth for processing nested models (default: 1)</p></li>
1764
+ <li><p><strong>drop_id</strong> – Whether to drop the ID field (default: True)</p></li>
1765
+ <li><p><strong>current_level</strong> – Current recursion level (default: 0)</p></li>
1766
+ <li><p><strong>visited</strong> – Set of objects already visited to prevent infinite recursion (default: None)</p></li>
1767
+ <li><p><strong>field_prefix</strong> – Prefix for field paths in nested structures (default: “”)</p></li>
1768
+ </ul>
1769
+ </dd>
1770
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
1771
+ <dd class="field-even"><p>Column definitions for AG Grid</p>
1772
+ </dd>
1773
+ <dt class="field-odd">Return type<span class="colon">:</span></dt>
1774
+ <dd class="field-odd"><p>list</p>
1775
+ </dd>
1776
+ </dl>
1777
+ </dd></dl>
1778
+
1779
+ <dl class="py function">
1780
+ <dt class="sig sig-object py" id="simstack.util.make_table.make_column_defs_instance">
1781
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.make_table.</span></span><span class="sig-name descname"><span class="pre">make_column_defs_instance</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_instance</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">table_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_recursion_level</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">drop_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">current_level</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">visited</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Set</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">field_prefix</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">''</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/make_table.html#make_column_defs_instance"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.make_table.make_column_defs_instance" title="Link to this definition">¶</a></dt>
1782
+ <dd><p>Create column definitions for AG Grid based on a model instance.
1783
+ Uses the same logic as table data generation but works on an actual instance.
1784
+ This allows for dynamic column generation based on actual data values.</p>
1785
+ <dl class="field-list simple">
1786
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
1787
+ <dd class="field-odd"><ul class="simple">
1788
+ <li><p><strong>model_instance</strong> – The model instance to process</p></li>
1789
+ <li><p><strong>table_name</strong> – Optional name for the table (default: None, uses class name)</p></li>
1790
+ <li><p><strong>max_recursion_level</strong> – Maximum depth for processing nested models (default: 1)</p></li>
1791
+ <li><p><strong>drop_id</strong> – Whether to drop the ID field (default: True)</p></li>
1792
+ <li><p><strong>current_level</strong> – Current recursion level (default: 0)</p></li>
1793
+ <li><p><strong>visited</strong> – Set of objects already visited to prevent infinite recursion (default: None)</p></li>
1794
+ <li><p><strong>field_prefix</strong> – Prefix for field paths in nested structures (default: “”)</p></li>
1795
+ </ul>
1796
+ </dd>
1797
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
1798
+ <dd class="field-even"><p>Column definitions for AG Grid</p>
1799
+ </dd>
1800
+ <dt class="field-odd">Return type<span class="colon">:</span></dt>
1801
+ <dd class="field-odd"><p>list</p>
1802
+ </dd>
1803
+ </dl>
1804
+ </dd></dl>
1805
+
1806
+ <dl class="py function">
1807
+ <dt class="sig sig-object py" id="simstack.util.make_table.make_table_entries">
1808
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.make_table.</span></span><span class="sig-name descname"><span class="pre">make_table_entries</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_instances</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">table_name</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_recursion_level</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">drop_id</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/make_table.html#make_table_entries"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.make_table.make_table_entries" title="Link to this definition">¶</a></dt>
1809
+ <dd><p>Create AG Grid table configuration for a list of model instances.
1810
+ This is the main function to make tables that are visible in the ui.</p>
1811
+ <p>To generate a table in the ui the ui_schema of the class should initialize
1812
+ the grid_options for the table.</p>
1813
+ <p>It is basically impossible to predict what a table should be for a class but
1814
+ tables can be created only from lists. The make_table function of the class should
1815
+ therefore call this function to generate the table for appropriate list fields and
1816
+ merge these manually where it makes sense.</p>
1817
+ <p>This function calls the helper functions make_table_entries_helper and make_column_defs_helper
1818
+ which recursively process the model instances and their fields to generate the table data and column definitions.</p>
1819
+ <p>for model fields these functions check if the nested model has functions make_columns or make_column_defs
1820
+ which are called to generate the column data and definitions, respectively</p>
1821
+ <p>These functions do not exist by default but can be used by models to modify the default definitions
1822
+ where they dont work. This is typically the case if the models contain huge data sets that
1823
+ we do not want to display in the table. An example of this is in the Molecule class.</p>
1824
+ <dl class="field-list simple">
1825
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
1826
+ <dd class="field-odd"><ul class="simple">
1827
+ <li><p><strong>model_instances</strong> – List of model instances to process</p></li>
1828
+ <li><p><strong>table_name</strong> – Name for the table (default: None, uses class name)</p></li>
1829
+ <li><p><strong>max_recursion_level</strong> – Maximum depth for processing nested models (default: 1)</p></li>
1830
+ <li><p><strong>drop_id</strong> – Whether to drop the ID field (default: True)</p></li>
1831
+ </ul>
1832
+ </dd>
1833
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
1834
+ <dd class="field-even"><p>Dictionary with ‘tableName’, ‘rowData’ (for AG Grid), and ‘columnDefs’</p>
1835
+ </dd>
1836
+ <dt class="field-odd">Return type<span class="colon">:</span></dt>
1837
+ <dd class="field-odd"><p>dict</p>
1838
+ </dd>
1839
+ </dl>
1840
+ </dd></dl>
1841
+
1842
+ <dl class="py function">
1843
+ <dt class="sig sig-object py" id="simstack.util.make_table.make_table_entries_helper">
1844
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.make_table.</span></span><span class="sig-name descname"><span class="pre">make_table_entries_helper</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_instance</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">table_name</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_recursion_level</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">drop_id</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">current_level</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">visited</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">field_prefix</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">''</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/make_table.html#make_table_entries_helper"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.make_table.make_table_entries_helper" title="Link to this definition">¶</a></dt>
1845
+ <dd><p>Create table data for AG Grid from a model instance.
1846
+ Handles datetime objects properly and can optionally drop ID fields.</p>
1847
+ <dl class="field-list simple">
1848
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
1849
+ <dd class="field-odd"><ul class="simple">
1850
+ <li><p><strong>model_instance</strong> – The model instance to process</p></li>
1851
+ <li><p><strong>table_name</strong> – Optional name for the table (default: None, uses class name)</p></li>
1852
+ <li><p><strong>max_recursion_level</strong> – Maximum depth for processing nested models (default: 1)</p></li>
1853
+ <li><p><strong>drop_id</strong> – Whether to drop the ID field (default: True)</p></li>
1854
+ <li><p><strong>current_level</strong> – Current recursion level (default: 0)</p></li>
1855
+ <li><p><strong>visited</strong> – Set of objects already visited to prevent infinite recursion (default: None)</p></li>
1856
+ <li><p><strong>field_prefix</strong> – Prefix for field paths in nested structures (default: “”)</p></li>
1857
+ </ul>
1858
+ </dd>
1859
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
1860
+ <dd class="field-even"><p>Dictionary with ‘tableName’ and ‘tableData’ (rows data for AG Grid)</p>
1861
+ </dd>
1862
+ <dt class="field-odd">Return type<span class="colon">:</span></dt>
1863
+ <dd class="field-odd"><p>dict</p>
1864
+ </dd>
1865
+ </dl>
1866
+ </dd></dl>
1867
+
1868
+ <dl class="py function">
1869
+ <dt class="sig sig-object py" id="simstack.util.make_table.ui_add_table">
1870
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.make_table.</span></span><span class="sig-name descname"><span class="pre">ui_add_table</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ui_options</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/make_table.html#ui_add_table"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.make_table.ui_add_table" title="Link to this definition">¶</a></dt>
1871
+ <dd><p>Add table options to the UI schema for AG Grid.</p>
1872
+ <p>the class must then implement o make_table function calling make_table
1873
+ :param ui_options:
1874
+ :return: modified ui_options</p>
1875
+ </dd></dl>
1876
+
1877
+ </section>
1878
+ <section id="module-simstack.util.mappings">
1879
+ <span id="simstack-util-mappings-module"></span><h2>simstack.util.mappings module<a class="headerlink" href="#module-simstack.util.mappings" title="Link to this heading">¶</a></h2>
1880
+ <dl class="py class">
1881
+ <dt class="sig sig-object py" id="simstack.util.mappings.ModelMappingTable">
1882
+ <span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.mappings.</span></span><span class="sig-name descname"><span class="pre">ModelMappingTable</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">mappings</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="simstack.models.html#simstack.models.models.ModelMapping" title="simstack.models.models.ModelMapping"><span class="pre">ModelMapping</span></a><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/mappings.html#ModelMappingTable"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.mappings.ModelMappingTable" title="Link to this definition">¶</a></dt>
1883
+ <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
1884
+ <dl class="py method">
1885
+ <dt class="sig sig-object py" id="simstack.util.mappings.ModelMappingTable.get_by_mapping">
1886
+ <span class="sig-name descname"><span class="pre">get_by_mapping</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">mapping</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="simstack.models.html#simstack.models.models.ModelMapping" title="simstack.models.models.ModelMapping"><span class="pre">ModelMapping</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/mappings.html#ModelMappingTable.get_by_mapping"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.mappings.ModelMappingTable.get_by_mapping" title="Link to this definition">¶</a></dt>
1887
+ <dd></dd></dl>
1888
+
1889
+ <dl class="py method">
1890
+ <dt class="sig sig-object py" id="simstack.util.mappings.ModelMappingTable.get_by_name">
1891
+ <span class="sig-name descname"><span class="pre">get_by_name</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="simstack.models.html#simstack.models.models.ModelMapping" title="simstack.models.models.ModelMapping"><span class="pre">ModelMapping</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/mappings.html#ModelMappingTable.get_by_name"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.mappings.ModelMappingTable.get_by_name" title="Link to this definition">¶</a></dt>
1892
+ <dd></dd></dl>
1893
+
1894
+ <dl class="py method">
1895
+ <dt class="sig sig-object py" id="simstack.util.mappings.ModelMappingTable.load">
1896
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">load</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">engine</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">AIOEngine</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/mappings.html#ModelMappingTable.load"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.mappings.ModelMappingTable.load" title="Link to this definition">¶</a></dt>
1897
+ <dd></dd></dl>
1898
+
1899
+ </dd></dl>
1900
+
1901
+ <dl class="py class">
1902
+ <dt class="sig sig-object py" id="simstack.util.mappings.NodeMappingTable">
1903
+ <span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.mappings.</span></span><span class="sig-name descname"><span class="pre">NodeMappingTable</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">nodes</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="simstack.models.html#simstack.models.models.NodeModel" title="simstack.models.models.NodeModel"><span class="pre">NodeModel</span></a><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/mappings.html#NodeMappingTable"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.mappings.NodeMappingTable" title="Link to this definition">¶</a></dt>
1904
+ <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
1905
+ <dl class="py method">
1906
+ <dt class="sig sig-object py" id="simstack.util.mappings.NodeMappingTable.get_by_mapping">
1907
+ <span class="sig-name descname"><span class="pre">get_by_mapping</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">mapping</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="simstack.models.html#simstack.models.models.NodeModel" title="simstack.models.models.NodeModel"><span class="pre">NodeModel</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/mappings.html#NodeMappingTable.get_by_mapping"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.mappings.NodeMappingTable.get_by_mapping" title="Link to this definition">¶</a></dt>
1908
+ <dd></dd></dl>
1909
+
1910
+ <dl class="py method">
1911
+ <dt class="sig sig-object py" id="simstack.util.mappings.NodeMappingTable.get_by_name">
1912
+ <span class="sig-name descname"><span class="pre">get_by_name</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="simstack.models.html#simstack.models.models.NodeModel" title="simstack.models.models.NodeModel"><span class="pre">NodeModel</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/mappings.html#NodeMappingTable.get_by_name"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.mappings.NodeMappingTable.get_by_name" title="Link to this definition">¶</a></dt>
1913
+ <dd></dd></dl>
1914
+
1915
+ <dl class="py method">
1916
+ <dt class="sig sig-object py" id="simstack.util.mappings.NodeMappingTable.load">
1917
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">load</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">engine</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">AIOEngine</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/mappings.html#NodeMappingTable.load"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.mappings.NodeMappingTable.load" title="Link to this definition">¶</a></dt>
1918
+ <dd></dd></dl>
1919
+
1920
+ </dd></dl>
1921
+
1922
+ </section>
1923
+ <section id="module-simstack.util.minimal_route_finder">
1924
+ <span id="simstack-util-minimal-route-finder-module"></span><h2>simstack.util.minimal_route_finder module<a class="headerlink" href="#module-simstack.util.minimal_route_finder" title="Link to this heading">¶</a></h2>
1925
+ <dl class="py function">
1926
+ <dt class="sig sig-object py" id="simstack.util.minimal_route_finder.find_minimal_route">
1927
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.minimal_route_finder.</span></span><span class="sig-name descname"><span class="pre">find_minimal_route</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">routes</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">source</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">target</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/minimal_route_finder.html#find_minimal_route"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.minimal_route_finder.find_minimal_route" title="Link to this definition">¶</a></dt>
1928
+ <dd><p>Find the minimal (shortest) route from source to target.</p>
1929
+ <dl class="field-list simple">
1930
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
1931
+ <dd class="field-odd"><ul class="simple">
1932
+ <li><p><strong>routes</strong> – List of route dictionaries with ‘source’, ‘target’, and ‘host’</p></li>
1933
+ <li><p><strong>source</strong> – The starting node</p></li>
1934
+ <li><p><strong>target</strong> – The destination node</p></li>
1935
+ </ul>
1936
+ </dd>
1937
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
1938
+ <dd class="field-even"><p>A list of route dictionaries representing the shortest path from source to target,
1939
+ or an empty list if no path exists</p>
1940
+ </dd>
1941
+ </dl>
1942
+ </dd></dl>
1943
+
1944
+ <dl class="py function">
1945
+ <dt class="sig sig-object py" id="simstack.util.minimal_route_finder.find_shortest_route">
1946
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.minimal_route_finder.</span></span><span class="sig-name descname"><span class="pre">find_shortest_route</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">routes</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">source</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">target</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#simstack.util.minimal_route_finder.find_shortest_route" title="Link to this definition">¶</a></dt>
1947
+ <dd><p>Find the minimal (shortest) route from source to target.</p>
1948
+ <dl class="field-list simple">
1949
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
1950
+ <dd class="field-odd"><ul class="simple">
1951
+ <li><p><strong>routes</strong> – List of route dictionaries with ‘source’, ‘target’, and ‘host’</p></li>
1952
+ <li><p><strong>source</strong> – The starting node</p></li>
1953
+ <li><p><strong>target</strong> – The destination node</p></li>
1954
+ </ul>
1955
+ </dd>
1956
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
1957
+ <dd class="field-even"><p>A list of route dictionaries representing the shortest path from source to target,
1958
+ or an empty list if no path exists</p>
1959
+ </dd>
1960
+ </dl>
1961
+ </dd></dl>
1962
+
1963
+ </section>
1964
+ <section id="module-simstack.util.mock_db">
1965
+ <span id="simstack-util-mock-db-module"></span><h2>simstack.util.mock_db module<a class="headerlink" href="#module-simstack.util.mock_db" title="Link to this heading">¶</a></h2>
1966
+ <dl class="py class">
1967
+ <dt class="sig sig-object py" id="simstack.util.mock_db.InMemoryAIOEngine">
1968
+ <span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.mock_db.</span></span><span class="sig-name descname"><span class="pre">InMemoryAIOEngine</span></span><a class="reference internal" href="../../_modules/simstack/util/mock_db.html#InMemoryAIOEngine"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.mock_db.InMemoryAIOEngine" title="Link to this definition">¶</a></dt>
1969
+ <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
1970
+ <dl class="py method">
1971
+ <dt class="sig sig-object py" id="simstack.util.mock_db.InMemoryAIOEngine.find">
1972
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">find</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Type</span><span class="p"><span class="pre">[</span></span><span class="pre">T</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">query</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">T</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/mock_db.html#InMemoryAIOEngine.find"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.mock_db.InMemoryAIOEngine.find" title="Link to this definition">¶</a></dt>
1973
+ <dd></dd></dl>
1974
+
1975
+ <dl class="py method">
1976
+ <dt class="sig sig-object py" id="simstack.util.mock_db.InMemoryAIOEngine.save">
1977
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">save</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">instance</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">T</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">T</span></span></span><a class="reference internal" href="../../_modules/simstack/util/mock_db.html#InMemoryAIOEngine.save"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.mock_db.InMemoryAIOEngine.save" title="Link to this definition">¶</a></dt>
1978
+ <dd></dd></dl>
1979
+
1980
+ </dd></dl>
1981
+
1982
+ <dl class="py class">
1983
+ <dt class="sig sig-object py" id="simstack.util.mock_db.InMemoryCollection">
1984
+ <span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.mock_db.</span></span><span class="sig-name descname"><span class="pre">InMemoryCollection</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">engine</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#simstack.util.mock_db.InMemoryAIOEngine" title="simstack.util.mock_db.InMemoryAIOEngine"><span class="pre">InMemoryAIOEngine</span></a></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/mock_db.html#InMemoryCollection"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.mock_db.InMemoryCollection" title="Link to this definition">¶</a></dt>
1985
+ <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
1986
+ </dd></dl>
1987
+
1988
+ <dl class="py function">
1989
+ <dt class="sig sig-object py" id="simstack.util.mock_db.find_one">
1990
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.mock_db.</span></span><span class="sig-name descname"><span class="pre">find_one</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">model</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Type</span><span class="p"><span class="pre">[</span></span><span class="pre">T</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">condition</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">query</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">T</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/mock_db.html#find_one"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.mock_db.find_one" title="Link to this definition">¶</a></dt>
1991
+ <dd></dd></dl>
1992
+
1993
+ </section>
1994
+ <section id="module-simstack.util.module_path_checker">
1995
+ <span id="simstack-util-module-path-checker-module"></span><h2>simstack.util.module_path_checker module<a class="headerlink" href="#module-simstack.util.module_path_checker" title="Link to this heading">¶</a></h2>
1996
+ <dl class="py function">
1997
+ <dt class="sig sig-object py" id="simstack.util.module_path_checker.is_module_subpath_of_path">
1998
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.module_path_checker.</span></span><span class="sig-name descname"><span class="pre">is_module_subpath_of_path</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">module_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">path_info_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Path</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="../../_modules/simstack/util/module_path_checker.html#is_module_subpath_of_path"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.module_path_checker.is_module_subpath_of_path" title="Link to this definition">¶</a></dt>
1999
+ <dd><p>Check whether a dot-separated module path is a subpath of an absolute path.</p>
2000
+ <dl class="field-list simple">
2001
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
2002
+ <dd class="field-odd"><ul class="simple">
2003
+ <li><p><strong>module_path</strong> – A dot-separated path relative to the project root (e.g., “src.simstack.core.artifacts”)</p></li>
2004
+ <li><p><strong>path_info_path</strong> – An absolute path below the project root (e.g., “/path/to/project/src/simstack/core”)</p></li>
2005
+ </ul>
2006
+ </dd>
2007
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
2008
+ <dd class="field-even"><p>True if the module path corresponds to a location under the given absolute path, False otherwise</p>
2009
+ </dd>
2010
+ </dl>
2011
+ </dd></dl>
2012
+
2013
+ </section>
2014
+ <section id="module-simstack.util.object_list_mixin">
2015
+ <span id="simstack-util-object-list-mixin-module"></span><h2>simstack.util.object_list_mixin module<a class="headerlink" href="#module-simstack.util.object_list_mixin" title="Link to this heading">¶</a></h2>
2016
+ <dl class="py class">
2017
+ <dt class="sig sig-object py" id="simstack.util.object_list_mixin.ObjectListMixin">
2018
+ <span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.object_list_mixin.</span></span><span class="sig-name descname"><span class="pre">ObjectListMixin</span></span><a class="reference internal" href="../../_modules/simstack/util/object_list_mixin.html#ObjectListMixin"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.object_list_mixin.ObjectListMixin" title="Link to this definition">¶</a></dt>
2019
+ <dd><p>Bases: <a class="reference internal" href="#simstack.util.generic_list_mixin.GenericListMixin" title="simstack.util.generic_list_mixin.GenericListMixin"><code class="xref py py-class docutils literal notranslate"><span class="pre">GenericListMixin</span></code></a>[<code class="xref py py-class docutils literal notranslate"><span class="pre">ObjectId</span></code>], <code class="xref py py-class docutils literal notranslate"><span class="pre">Generic</span></code>[<code class="xref py py-obj docutils literal notranslate"><span class="pre">T</span></code>]</p>
2020
+ <p>Mixin class for lists of Model ObjectIDs.
2021
+ Stores ObjectId instances in <cite>elements</cite>, but allows interaction with Model instances.</p>
2022
+ <dl class="py method">
2023
+ <dt class="sig sig-object py" id="simstack.util.object_list_mixin.ObjectListMixin.append">
2024
+ <span class="sig-name descname"><span class="pre">append</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">element</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">T</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/object_list_mixin.html#ObjectListMixin.append"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.object_list_mixin.ObjectListMixin.append" title="Link to this definition">¶</a></dt>
2025
+ <dd></dd></dl>
2026
+
2027
+ <dl class="py method">
2028
+ <dt class="sig sig-object py" id="simstack.util.object_list_mixin.ObjectListMixin.clear">
2029
+ <span class="sig-name descname"><span class="pre">clear</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/object_list_mixin.html#ObjectListMixin.clear"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.object_list_mixin.ObjectListMixin.clear" title="Link to this definition">¶</a></dt>
2030
+ <dd></dd></dl>
2031
+
2032
+ <dl class="py method">
2033
+ <dt class="sig sig-object py" id="simstack.util.object_list_mixin.ObjectListMixin.copy">
2034
+ <span class="sig-name descname"><span class="pre">copy</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#simstack.util.object_list_mixin.ObjectListMixin" title="simstack.util.object_list_mixin.ObjectListMixin"><span class="pre">ObjectListMixin</span></a><span class="p"><span class="pre">[</span></span><span class="pre">T</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/object_list_mixin.html#ObjectListMixin.copy"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.object_list_mixin.ObjectListMixin.copy" title="Link to this definition">¶</a></dt>
2035
+ <dd></dd></dl>
2036
+
2037
+ <dl class="py method">
2038
+ <dt class="sig sig-object py" id="simstack.util.object_list_mixin.ObjectListMixin.count">
2039
+ <span class="sig-name descname"><span class="pre">count</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">element</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">T</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">int</span></span></span><a class="reference internal" href="../../_modules/simstack/util/object_list_mixin.html#ObjectListMixin.count"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.object_list_mixin.ObjectListMixin.count" title="Link to this definition">¶</a></dt>
2040
+ <dd></dd></dl>
2041
+
2042
+ <dl class="py method">
2043
+ <dt class="sig sig-object py" id="simstack.util.object_list_mixin.ObjectListMixin.db_find_postprocess">
2044
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">db_find_postprocess</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">db</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#simstack.util.db.Database" title="simstack.util.db.Database"><span class="pre">Database</span></a></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/object_list_mixin.html#ObjectListMixin.db_find_postprocess"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.object_list_mixin.ObjectListMixin.db_find_postprocess" title="Link to this definition">¶</a></dt>
2045
+ <dd><p>Instance-level post-processing</p>
2046
+ </dd></dl>
2047
+
2048
+ <dl class="py method">
2049
+ <dt class="sig sig-object py" id="simstack.util.object_list_mixin.ObjectListMixin.delete_element">
2050
+ <span class="sig-name descname"><span class="pre">delete_element</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">element</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">T</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">ObjectId</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/object_list_mixin.html#ObjectListMixin.delete_element"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.object_list_mixin.ObjectListMixin.delete_element" title="Link to this definition">¶</a></dt>
2051
+ <dd></dd></dl>
2052
+
2053
+ <dl class="py method">
2054
+ <dt class="sig sig-object py" id="simstack.util.object_list_mixin.ObjectListMixin.extend">
2055
+ <span class="sig-name descname"><span class="pre">extend</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">elements</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">T</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><a class="reference internal" href="#simstack.util.object_list_mixin.ObjectListMixin" title="simstack.util.object_list_mixin.ObjectListMixin"><span class="pre">ObjectListMixin</span></a><span class="p"><span class="pre">[</span></span><span class="pre">T</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/object_list_mixin.html#ObjectListMixin.extend"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.object_list_mixin.ObjectListMixin.extend" title="Link to this definition">¶</a></dt>
2056
+ <dd></dd></dl>
2057
+
2058
+ <dl class="py method">
2059
+ <dt class="sig sig-object py" id="simstack.util.object_list_mixin.ObjectListMixin.find">
2060
+ <span class="sig-name descname"><span class="pre">find</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">pattern</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">T</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/object_list_mixin.html#ObjectListMixin.find"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.object_list_mixin.ObjectListMixin.find" title="Link to this definition">¶</a></dt>
2061
+ <dd></dd></dl>
2062
+
2063
+ <dl class="py method">
2064
+ <dt class="sig sig-object py" id="simstack.util.object_list_mixin.ObjectListMixin.find_all">
2065
+ <span class="sig-name descname"><span class="pre">find_all</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">pattern</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Iterator</span><span class="p"><span class="pre">[</span></span><span class="pre">T</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/object_list_mixin.html#ObjectListMixin.find_all"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.object_list_mixin.ObjectListMixin.find_all" title="Link to this definition">¶</a></dt>
2066
+ <dd></dd></dl>
2067
+
2068
+ <dl class="py method">
2069
+ <dt class="sig sig-object py" id="simstack.util.object_list_mixin.ObjectListMixin.get">
2070
+ <span class="sig-name descname"><span class="pre">get</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">index</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">T</span></span></span><a class="reference internal" href="../../_modules/simstack/util/object_list_mixin.html#ObjectListMixin.get"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.object_list_mixin.ObjectListMixin.get" title="Link to this definition">¶</a></dt>
2071
+ <dd><p>Get an element by index, loading it from DB if necessary.</p>
2072
+ </dd></dl>
2073
+
2074
+ <dl class="py method">
2075
+ <dt class="sig sig-object py" id="simstack.util.object_list_mixin.ObjectListMixin.index">
2076
+ <span class="sig-name descname"><span class="pre">index</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">element</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">T</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">start</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stop</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">int</span></span></span><a class="reference internal" href="../../_modules/simstack/util/object_list_mixin.html#ObjectListMixin.index"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.object_list_mixin.ObjectListMixin.index" title="Link to this definition">¶</a></dt>
2077
+ <dd></dd></dl>
2078
+
2079
+ <dl class="py method">
2080
+ <dt class="sig sig-object py" id="simstack.util.object_list_mixin.ObjectListMixin.insert">
2081
+ <span class="sig-name descname"><span class="pre">insert</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">index</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">element</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">T</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/object_list_mixin.html#ObjectListMixin.insert"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.object_list_mixin.ObjectListMixin.insert" title="Link to this definition">¶</a></dt>
2082
+ <dd></dd></dl>
2083
+
2084
+ <dl class="py method">
2085
+ <dt class="sig sig-object py" id="simstack.util.object_list_mixin.ObjectListMixin.pop">
2086
+ <span class="sig-name descname"><span class="pre">pop</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">index</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">-1</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">T</span></span></span><a class="reference internal" href="../../_modules/simstack/util/object_list_mixin.html#ObjectListMixin.pop"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.object_list_mixin.ObjectListMixin.pop" title="Link to this definition">¶</a></dt>
2087
+ <dd></dd></dl>
2088
+
2089
+ <dl class="py method">
2090
+ <dt class="sig sig-object py" id="simstack.util.object_list_mixin.ObjectListMixin.remove">
2091
+ <span class="sig-name descname"><span class="pre">remove</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">element</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">T</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/object_list_mixin.html#ObjectListMixin.remove"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.object_list_mixin.ObjectListMixin.remove" title="Link to this definition">¶</a></dt>
2092
+ <dd></dd></dl>
2093
+
2094
+ <dl class="py method">
2095
+ <dt class="sig sig-object py" id="simstack.util.object_list_mixin.ObjectListMixin.reverse">
2096
+ <span class="sig-name descname"><span class="pre">reverse</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/object_list_mixin.html#ObjectListMixin.reverse"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.object_list_mixin.ObjectListMixin.reverse" title="Link to this definition">¶</a></dt>
2097
+ <dd></dd></dl>
2098
+
2099
+ <dl class="py method">
2100
+ <dt class="sig sig-object py" id="simstack.util.object_list_mixin.ObjectListMixin.save">
2101
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">save</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">db</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#simstack.util.db.Database" title="simstack.util.db.Database"><span class="pre">Database</span></a></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/object_list_mixin.html#ObjectListMixin.save"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.object_list_mixin.ObjectListMixin.save" title="Link to this definition">¶</a></dt>
2102
+ <dd></dd></dl>
2103
+
2104
+ <dl class="py method">
2105
+ <dt class="sig sig-object py" id="simstack.util.object_list_mixin.ObjectListMixin.sort">
2106
+ <span class="sig-name descname"><span class="pre">sort</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">key</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">reverse</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/object_list_mixin.html#ObjectListMixin.sort"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.object_list_mixin.ObjectListMixin.sort" title="Link to this definition">¶</a></dt>
2107
+ <dd></dd></dl>
2108
+
2109
+ </dd></dl>
2110
+
2111
+ </section>
2112
+ <section id="module-simstack.util.path_manager">
2113
+ <span id="simstack-util-path-manager-module"></span><h2>simstack.util.path_manager module<a class="headerlink" href="#module-simstack.util.path_manager" title="Link to this heading">¶</a></h2>
2114
+ <dl class="py class">
2115
+ <dt class="sig sig-object py" id="simstack.util.path_manager.PathManager">
2116
+ <span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.path_manager.</span></span><span class="sig-name descname"><span class="pre">PathManager</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/path_manager.html#PathManager"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.path_manager.PathManager" title="Link to this definition">¶</a></dt>
2117
+ <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
2118
+ <p>Manages paths for the SimStack application, providing mechanisms to find Python files
2119
+ for nodes and models. Will read only .py files.
2120
+ By default travers all directories below the project root.
2121
+ Uses DirectoryPath for efficient directory traversal.</p>
2122
+ <dl class="py method">
2123
+ <dt class="sig sig-object py" id="simstack.util.path_manager.PathManager.add_path">
2124
+ <span class="sig-name descname"><span class="pre">add_path</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">drops</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">''</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">use_pickle</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/path_manager.html#PathManager.add_path"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.path_manager.PathManager.add_path" title="Link to this definition">¶</a></dt>
2125
+ <dd><p>Add a path to the manager.</p>
2126
+ <dl class="field-list simple">
2127
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
2128
+ <dd class="field-odd"><ul class="simple">
2129
+ <li><p><strong>name</strong> – Name identifier for the path</p></li>
2130
+ <li><p><strong>path</strong> – The directory path relative to the project root</p></li>
2131
+ <li><p><strong>drops</strong> – Prefix to drop from module names (for import paths)</p></li>
2132
+ <li><p><strong>use_pickle</strong> – Whether to use pickle for this path</p></li>
2133
+ </ul>
2134
+ </dd>
2135
+ </dl>
2136
+ </dd></dl>
2137
+
2138
+ <dl class="py method">
2139
+ <dt class="sig sig-object py" id="simstack.util.path_manager.PathManager.default_excludes">
2140
+ <span class="sig-name descname"><span class="pre">default_excludes</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/path_manager.html#PathManager.default_excludes"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.path_manager.PathManager.default_excludes" title="Link to this definition">¶</a></dt>
2141
+ <dd></dd></dl>
2142
+
2143
+ <dl class="py method">
2144
+ <dt class="sig sig-object py" id="simstack.util.path_manager.PathManager.find_parent_path">
2145
+ <span class="sig-name descname"><span class="pre">find_parent_path</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/path_manager.html#PathManager.find_parent_path"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.path_manager.PathManager.find_parent_path" title="Link to this definition">¶</a></dt>
2146
+ <dd><p>Find the parent path from self.paths that contains the given path.</p>
2147
+ <dl class="field-list simple">
2148
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
2149
+ <dd class="field-odd"><p><strong>path</strong> – The path to find the parent of</p>
2150
+ </dd>
2151
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
2152
+ <dd class="field-even"><p>The name of the parent path from self.paths that contains the given path,
2153
+ or None if no parent is found</p>
2154
+ </dd>
2155
+ </dl>
2156
+ </dd></dl>
2157
+
2158
+ <dl class="py method">
2159
+ <dt class="sig sig-object py" id="simstack.util.path_manager.PathManager.find_python_files">
2160
+ <span class="sig-name descname"><span class="pre">find_python_files</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">path_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">excluded_patterns</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/path_manager.html#PathManager.find_python_files"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.path_manager.PathManager.find_python_files" title="Link to this definition">¶</a></dt>
2161
+ <dd><p>Find Python files in the specified path, excluding __init__.py files.</p>
2162
+ <dl class="field-list simple">
2163
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
2164
+ <dd class="field-odd"><ul class="simple">
2165
+ <li><p><strong>path_name</strong> – Name of the path to search in</p></li>
2166
+ <li><p><strong>excluded_patterns</strong> – Additional patterns to exclude</p></li>
2167
+ </ul>
2168
+ </dd>
2169
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
2170
+ <dd class="field-even"><p>List of absolute file paths to Python files</p>
2171
+ </dd>
2172
+ </dl>
2173
+ </dd></dl>
2174
+
2175
+ <dl class="py method">
2176
+ <dt class="sig sig-object py" id="simstack.util.path_manager.PathManager.from_config">
2177
+ <span class="property"><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">from_config</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">config</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#simstack.util.path_manager.PathManager" title="simstack.util.path_manager.PathManager"><span class="pre">PathManager</span></a></span></span><a class="reference internal" href="../../_modules/simstack/util/path_manager.html#PathManager.from_config"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.path_manager.PathManager.from_config" title="Link to this definition">¶</a></dt>
2178
+ <dd><p>Create a PathManager from configuration.</p>
2179
+ <dl class="field-list simple">
2180
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
2181
+ <dd class="field-odd"><p><strong>config</strong> – Configuration object containing path information</p>
2182
+ </dd>
2183
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
2184
+ <dd class="field-even"><p>Initialized PathManager instance</p>
2185
+ </dd>
2186
+ </dl>
2187
+ </dd></dl>
2188
+
2189
+ <dl class="py method">
2190
+ <dt class="sig sig-object py" id="simstack.util.path_manager.PathManager.get_drops">
2191
+ <span class="sig-name descname"><span class="pre">get_drops</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">path_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/simstack/util/path_manager.html#PathManager.get_drops"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.path_manager.PathManager.get_drops" title="Link to this definition">¶</a></dt>
2192
+ <dd><p>Get the drops value for a path.</p>
2193
+ <dl class="field-list simple">
2194
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
2195
+ <dd class="field-odd"><p><strong>path_name</strong> – Name of the path</p>
2196
+ </dd>
2197
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
2198
+ <dd class="field-even"><p>The drops value for the path</p>
2199
+ </dd>
2200
+ </dl>
2201
+ </dd></dl>
2202
+
2203
+ <dl class="py method">
2204
+ <dt class="sig sig-object py" id="simstack.util.path_manager.PathManager.get_path">
2205
+ <span class="sig-name descname"><span class="pre">get_path</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/path_manager.html#PathManager.get_path"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.path_manager.PathManager.get_path" title="Link to this definition">¶</a></dt>
2206
+ <dd><p>Get a path by name.</p>
2207
+ <dl class="field-list simple">
2208
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
2209
+ <dd class="field-odd"><p><strong>name</strong> – Name of the path to retrieve</p>
2210
+ </dd>
2211
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
2212
+ <dd class="field-even"><p>Dictionary containing path information</p>
2213
+ </dd>
2214
+ </dl>
2215
+ </dd></dl>
2216
+
2217
+ <dl class="py method">
2218
+ <dt class="sig sig-object py" id="simstack.util.path_manager.PathManager.iterate_python_files">
2219
+ <span class="sig-name descname"><span class="pre">iterate_python_files</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">path_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">excluded_patterns</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Iterator</span><span class="p"><span class="pre">[</span></span><span class="pre">Path</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/path_manager.html#PathManager.iterate_python_files"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.path_manager.PathManager.iterate_python_files" title="Link to this definition">¶</a></dt>
2220
+ <dd><p>Iterate over Python files in the specified path, excluding __init__.py files.</p>
2221
+ <dl class="field-list simple">
2222
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
2223
+ <dd class="field-odd"><ul class="simple">
2224
+ <li><p><strong>path_name</strong> – Name of the path to search in</p></li>
2225
+ <li><p><strong>excluded_patterns</strong> – Additional patterns to exclude</p></li>
2226
+ </ul>
2227
+ </dd>
2228
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
2229
+ <dd class="field-even"><p>Iterator of Path objects for Python files</p>
2230
+ </dd>
2231
+ </dl>
2232
+ </dd></dl>
2233
+
2234
+ <dl class="py method">
2235
+ <dt class="sig sig-object py" id="simstack.util.path_manager.PathManager.reset">
2236
+ <span class="sig-name descname"><span class="pre">reset</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/path_manager.html#PathManager.reset"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.path_manager.PathManager.reset" title="Link to this definition">¶</a></dt>
2237
+ <dd></dd></dl>
2238
+
2239
+ </dd></dl>
2240
+
2241
+ </section>
2242
+ <section id="module-simstack.util.project_root_finder">
2243
+ <span id="simstack-util-project-root-finder-module"></span><h2>simstack.util.project_root_finder module<a class="headerlink" href="#module-simstack.util.project_root_finder" title="Link to this heading">¶</a></h2>
2244
+ <dl class="py function">
2245
+ <dt class="sig sig-object py" id="simstack.util.project_root_finder.find_project_root">
2246
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.project_root_finder.</span></span><span class="sig-name descname"><span class="pre">find_project_root</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">current_file</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">marker_files</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">('.git',</span> <span class="pre">'simstack.toml',</span> <span class="pre">'setup.py')</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">skip_files</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">('simstack_marker.com',)</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Path</span></span></span><a class="reference internal" href="../../_modules/simstack/util/project_root_finder.html#find_project_root"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.project_root_finder.find_project_root" title="Link to this definition">¶</a></dt>
2247
+ <dd><p>Find the project root directory by searching for common marker files</p>
2248
+ <dl class="field-list simple">
2249
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
2250
+ <dd class="field-odd"><ul class="simple">
2251
+ <li><p><strong>skip_files</strong> – directories with these names will be skipped</p></li>
2252
+ <li><p><strong>current_file</strong> – Path to the current file, defaults to __file__ if None</p></li>
2253
+ <li><p><strong>marker_files</strong> – Tuple of files/directories that indicate the project root</p></li>
2254
+ </ul>
2255
+ </dd>
2256
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
2257
+ <dd class="field-even"><p>Absolute path to the project root directory</p>
2258
+ </dd>
2259
+ </dl>
2260
+ </dd></dl>
2261
+
2262
+ </section>
2263
+ <section id="module-simstack.util.queue_watcher">
2264
+ <span id="simstack-util-queue-watcher-module"></span><h2>simstack.util.queue_watcher module<a class="headerlink" href="#module-simstack.util.queue_watcher" title="Link to this heading">¶</a></h2>
2265
+ <dl class="py function">
2266
+ <dt class="sig sig-object py" id="simstack.util.queue_watcher.main">
2267
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.queue_watcher.</span></span><span class="sig-name descname"><span class="pre">main</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">int</span></span></span><a class="reference internal" href="../../_modules/simstack/util/queue_watcher.html#main"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.queue_watcher.main" title="Link to this definition">¶</a></dt>
2268
+ <dd></dd></dl>
2269
+
2270
+ <dl class="py function">
2271
+ <dt class="sig sig-object py" id="simstack.util.queue_watcher.parse_spec">
2272
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.queue_watcher.</span></span><span class="sig-name descname"><span class="pre">parse_spec</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cmd_file</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Path</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/queue_watcher.html#parse_spec"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.queue_watcher.parse_spec" title="Link to this definition">¶</a></dt>
2273
+ <dd></dd></dl>
2274
+
2275
+ <dl class="py function">
2276
+ <dt class="sig sig-object py" id="simstack.util.queue_watcher.process_job_from_claim">
2277
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.queue_watcher.</span></span><span class="sig-name descname"><span class="pre">process_job_from_claim</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">base_stem</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">claimed_by_lock</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/queue_watcher.html#process_job_from_claim"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.queue_watcher.process_job_from_claim" title="Link to this definition">¶</a></dt>
2278
+ <dd><p>Process a job using base path (without suffix). If claimed_by_lock is True, we did not
2279
+ rename .ready; we will remove it at the end. Otherwise, we operate on .claim and remove it.</p>
2280
+ </dd></dl>
2281
+
2282
+ <dl class="py function">
2283
+ <dt class="sig sig-object py" id="simstack.util.queue_watcher.run_command">
2284
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.queue_watcher.</span></span><span class="sig-name descname"><span class="pre">run_command</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">command</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cwd</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">env</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">out_file</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">err_file</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Path</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">int</span></span></span><a class="reference internal" href="../../_modules/simstack/util/queue_watcher.html#run_command"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.queue_watcher.run_command" title="Link to this definition">¶</a></dt>
2285
+ <dd></dd></dl>
2286
+
2287
+ <dl class="py function">
2288
+ <dt class="sig sig-object py" id="simstack.util.queue_watcher.try_claim">
2289
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.queue_watcher.</span></span><span class="sig-name descname"><span class="pre">try_claim</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ready_file</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">retries</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">5</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">backoff</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0.05</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Path</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/queue_watcher.html#try_claim"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.queue_watcher.try_claim" title="Link to this definition">¶</a></dt>
2290
+ <dd><p>Atomically rename <a href="#id3"><span class="problematic" id="id4">*</span></a>.ready -&gt; <a href="#id5"><span class="problematic" id="id6">*</span></a>.claim. Retries on transient failures.
2291
+ Returns claim path if successful, else None.</p>
2292
+ </dd></dl>
2293
+
2294
+ <dl class="py function">
2295
+ <dt class="sig sig-object py" id="simstack.util.queue_watcher.try_lock">
2296
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.queue_watcher.</span></span><span class="sig-name descname"><span class="pre">try_lock</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">base_stem</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Path</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="../../_modules/simstack/util/queue_watcher.html#try_lock"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.queue_watcher.try_lock" title="Link to this definition">¶</a></dt>
2297
+ <dd><p>Create an exclusive lock file &lt;id&gt;.lock using O_CREAT|O_EXCL.
2298
+ Returns True if lock acquired, False otherwise.</p>
2299
+ </dd></dl>
2300
+
2301
+ </section>
2302
+ <section id="module-simstack.util.resource_config">
2303
+ <span id="simstack-util-resource-config-module"></span><h2>simstack.util.resource_config module<a class="headerlink" href="#module-simstack.util.resource_config" title="Link to this heading">¶</a></h2>
2304
+ <dl class="py class">
2305
+ <dt class="sig sig-object py" id="simstack.util.resource_config.ResourceConfig">
2306
+ <span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.resource_config.</span></span><span class="sig-name descname"><span class="pre">ResourceConfig</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">config_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">resource</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/resource_config.html#ResourceConfig"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.resource_config.ResourceConfig" title="Link to this definition">¶</a></dt>
2307
+ <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
2308
+ <p>ResourceConfig is responsible for managing configuration settings, setup,
2309
+ execution, and post-processing parameters for specified resources.</p>
2310
+ <p>This class is designed to read configuration data from a TOML file, provide
2311
+ an interface to access resource-specific parameters, and execute resource-related
2312
+ operations such as setup and running commands. It encapsulates functionality for
2313
+ handling temporary directories, file manipulation, and subprocess execution.</p>
2314
+ <dl class="py attribute">
2315
+ <dt class="sig sig-object py" id="simstack.util.resource_config.ResourceConfig._config">
2316
+ <span class="sig-name descname"><span class="pre">_config</span></span><a class="headerlink" href="#simstack.util.resource_config.ResourceConfig._config" title="Link to this definition">¶</a></dt>
2317
+ <dd><p>The loaded configuration dictionary.</p>
2318
+ <dl class="field-list simple">
2319
+ <dt class="field-odd">Type<span class="colon">:</span></dt>
2320
+ <dd class="field-odd"><p>Dict[str, Any]</p>
2321
+ </dd>
2322
+ </dl>
2323
+ </dd></dl>
2324
+
2325
+ <dl class="py attribute">
2326
+ <dt class="sig sig-object py" id="simstack.util.resource_config.ResourceConfig._resource">
2327
+ <span class="sig-name descname"><span class="pre">_resource</span></span><a class="headerlink" href="#simstack.util.resource_config.ResourceConfig._resource" title="Link to this definition">¶</a></dt>
2328
+ <dd><p>The name of the current resource.</p>
2329
+ <dl class="field-list simple">
2330
+ <dt class="field-odd">Type<span class="colon">:</span></dt>
2331
+ <dd class="field-odd"><p>str</p>
2332
+ </dd>
2333
+ </dl>
2334
+ </dd></dl>
2335
+
2336
+ <dl class="py method">
2337
+ <dt class="sig sig-object py" id="simstack.util.resource_config.ResourceConfig.get_postprocessing_params">
2338
+ <span class="sig-name descname"><span class="pre">get_postprocessing_params</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/resource_config.html#ResourceConfig.get_postprocessing_params"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.resource_config.ResourceConfig.get_postprocessing_params" title="Link to this definition">¶</a></dt>
2339
+ <dd><p>Returns the post-processing dict for the specified resource.
2340
+ Expected structure in TOML: [resource_name.post-processing] or [resource_name.postprocessing]</p>
2341
+ </dd></dl>
2342
+
2343
+ <dl class="py method">
2344
+ <dt class="sig sig-object py" id="simstack.util.resource_config.ResourceConfig.get_program">
2345
+ <span class="sig-name descname"><span class="pre">get_program</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">program_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/resource_config.html#ResourceConfig.get_program"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.resource_config.ResourceConfig.get_program" title="Link to this definition">¶</a></dt>
2346
+ <dd><p>Returns the dict from resource.program.name for program with name and the current resource.
2347
+ Expected structure in TOML: [resource_name.program.program_name]</p>
2348
+ </dd></dl>
2349
+
2350
+ <dl class="py method">
2351
+ <dt class="sig sig-object py" id="simstack.util.resource_config.ResourceConfig.get_setup_params">
2352
+ <span class="sig-name descname"><span class="pre">get_setup_params</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/resource_config.html#ResourceConfig.get_setup_params"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.resource_config.ResourceConfig.get_setup_params" title="Link to this definition">¶</a></dt>
2353
+ <dd><p>Returns the setup dict for the specified resource.
2354
+ Expected structure in TOML: [resource_name.setup]</p>
2355
+ </dd></dl>
2356
+
2357
+ <dl class="py property">
2358
+ <dt class="sig sig-object py" id="simstack.util.resource_config.ResourceConfig.os">
2359
+ <span class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">os</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></span><a class="headerlink" href="#simstack.util.resource_config.ResourceConfig.os" title="Link to this definition">¶</a></dt>
2360
+ <dd><p>Returns the OS of the current resource, defaults to ‘linux’.</p>
2361
+ </dd></dl>
2362
+
2363
+ <dl class="py method">
2364
+ <dt class="sig sig-object py" id="simstack.util.resource_config.ResourceConfig.run">
2365
+ <span class="sig-name descname"><span class="pre">run</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">program_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">input_files</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><a class="reference internal" href="simstack.models.html#simstack.models.files.FileStack" title="simstack.models.files.FileStack"><span class="pre">FileStack</span></a><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">output_files</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><a class="reference internal" href="simstack.models.html#simstack.models.files.FileStack" title="simstack.models.files.FileStack"><span class="pre">FileStack</span></a><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">node_runner</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/resource_config.html#ResourceConfig.run"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.resource_config.ResourceConfig.run" title="Link to this definition">¶</a></dt>
2366
+ <dd><p>Executes the run command with optional temporary directory usage and file handling.
2367
+ Retrieves parameters from the configuration for the specified program.</p>
2368
+ <dl class="field-list simple">
2369
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
2370
+ <dd class="field-odd"><ul class="simple">
2371
+ <li><p><strong>program_name</strong> – Name of the program to run.</p></li>
2372
+ <li><p><strong>input_files</strong> – List of input files (str or FileStack). Overrides TOML input_files if provided.</p></li>
2373
+ <li><p><strong>output_files</strong> – List of output files (str or FileStack). Overrides TOML output_files if provided.</p></li>
2374
+ <li><p><strong>node_runner</strong> – Optional NodeRunner instance for execution.</p></li>
2375
+ </ul>
2376
+ </dd>
2377
+ </dl>
2378
+ </dd></dl>
2379
+
2380
+ <dl class="py method">
2381
+ <dt class="sig sig-object py" id="simstack.util.resource_config.ResourceConfig.setup">
2382
+ <span class="sig-name descname"><span class="pre">setup</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">node_runner</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/resource_config.html#ResourceConfig.setup"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.resource_config.ResourceConfig.setup" title="Link to this definition">¶</a></dt>
2383
+ <dd><p>Executes the setup scripts for the current resource.</p>
2384
+ </dd></dl>
2385
+
2386
+ <dl class="py property">
2387
+ <dt class="sig sig-object py" id="simstack.util.resource_config.ResourceConfig.tmp_base_dir">
2388
+ <span class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">tmp_base_dir</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">Path</span></span><a class="headerlink" href="#simstack.util.resource_config.ResourceConfig.tmp_base_dir" title="Link to this definition">¶</a></dt>
2389
+ <dd></dd></dl>
2390
+
2391
+ <dl class="py method">
2392
+ <dt class="sig sig-object py" id="simstack.util.resource_config.ResourceConfig.tmp_dir">
2393
+ <span class="sig-name descname"><span class="pre">tmp_dir</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">task_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">ObjectId</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Path</span></span></span><a class="reference internal" href="../../_modules/simstack/util/resource_config.html#ResourceConfig.tmp_dir"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.resource_config.ResourceConfig.tmp_dir" title="Link to this definition">¶</a></dt>
2394
+ <dd></dd></dl>
2395
+
2396
+ </dd></dl>
2397
+
2398
+ </section>
2399
+ <section id="module-simstack.util.route_finder">
2400
+ <span id="simstack-util-route-finder-module"></span><h2>simstack.util.route_finder module<a class="headerlink" href="#module-simstack.util.route_finder" title="Link to this heading">¶</a></h2>
2401
+ <dl class="py function">
2402
+ <dt class="sig sig-object py" id="simstack.util.route_finder.find_route">
2403
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.route_finder.</span></span><span class="sig-name descname"><span class="pre">find_route</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">target</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">source</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/route_finder.html#find_route"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.route_finder.find_route" title="Link to this definition">¶</a></dt>
2404
+ <dd><p>Find the minimal route from source to target using available routes.</p>
2405
+ <dl class="field-list simple">
2406
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
2407
+ <dd class="field-odd"><ul class="simple">
2408
+ <li><p><strong>target</strong> (<em>str</em>) – The target system</p></li>
2409
+ <li><p><strong>source</strong> (<em>str</em>) – The source system</p></li>
2410
+ </ul>
2411
+ </dd>
2412
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
2413
+ <dd class="field-even"><p>A list of systems to visit in order, or None if no route exists</p>
2414
+ </dd>
2415
+ <dt class="field-odd">Return type<span class="colon">:</span></dt>
2416
+ <dd class="field-odd"><p>list</p>
2417
+ </dd>
2418
+ </dl>
2419
+ </dd></dl>
2420
+
2421
+ </section>
2422
+ <section id="module-simstack.util.runner_util">
2423
+ <span id="simstack-util-runner-util-module"></span><h2>simstack.util.runner_util module<a class="headerlink" href="#module-simstack.util.runner_util" title="Link to this heading">¶</a></h2>
2424
+ <dl class="py function">
2425
+ <dt class="sig sig-object py" id="simstack.util.runner_util.ensure_crontab_entry">
2426
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.runner_util.</span></span><span class="sig-name descname"><span class="pre">ensure_crontab_entry</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">command</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">schedule</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'*/10</span> <span class="pre">*</span> <span class="pre">*</span> <span class="pre">*</span> <span class="pre">*'</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/runner_util.html#ensure_crontab_entry"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.runner_util.ensure_crontab_entry" title="Link to this definition">¶</a></dt>
2427
+ <dd><p>Checks if a crontab entry exists and adds it if it doesn’t.</p>
2428
+ <dl class="field-list simple">
2429
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
2430
+ <dd class="field-odd"><ul class="simple">
2431
+ <li><p><strong>command</strong> (<em>str</em>) – The command to be executed by cron</p></li>
2432
+ <li><p><strong>schedule</strong> (<em>str</em>) – The cron schedule expression (default: every 10 minutes)</p></li>
2433
+ </ul>
2434
+ </dd>
2435
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
2436
+ <dd class="field-even"><p>True if entry was added, False if it already existed</p>
2437
+ </dd>
2438
+ <dt class="field-odd">Return type<span class="colon">:</span></dt>
2439
+ <dd class="field-odd"><p>bool</p>
2440
+ </dd>
2441
+ </dl>
2442
+ </dd></dl>
2443
+
2444
+ <dl class="py function">
2445
+ <dt class="sig sig-object py" id="simstack.util.runner_util.graceful_shutdown">
2446
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.runner_util.</span></span><span class="sig-name descname"><span class="pre">graceful_shutdown</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">resource_name</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/runner_util.html#graceful_shutdown"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.runner_util.graceful_shutdown" title="Link to this definition">¶</a></dt>
2447
+ <dd></dd></dl>
2448
+
2449
+ <dl class="py function">
2450
+ <dt class="sig sig-object py" id="simstack.util.runner_util.restart">
2451
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.runner_util.</span></span><span class="sig-name descname"><span class="pre">restart</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">resource_name</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/runner_util.html#restart"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.runner_util.restart" title="Link to this definition">¶</a></dt>
2452
+ <dd></dd></dl>
2453
+
2454
+ <dl class="py function">
2455
+ <dt class="sig sig-object py" id="simstack.util.runner_util.schedule_restart">
2456
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.runner_util.</span></span><span class="sig-name descname"><span class="pre">schedule_restart</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">resource_name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">restart_minutes</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/runner_util.html#schedule_restart"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.runner_util.schedule_restart" title="Link to this definition">¶</a></dt>
2457
+ <dd><p>Schedule a restart after the specified minutes</p>
2458
+ </dd></dl>
2459
+
2460
+ </section>
2461
+ <section id="module-simstack.util.runner_utils">
2462
+ <span id="simstack-util-runner-utils-module"></span><h2>simstack.util.runner_utils module<a class="headerlink" href="#module-simstack.util.runner_utils" title="Link to this heading">¶</a></h2>
2463
+ <dl class="py function">
2464
+ <dt class="sig sig-object py" id="simstack.util.runner_utils.clean_slurm_info">
2465
+ <span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.runner_utils.</span></span><span class="sig-name descname"><span class="pre">clean_slurm_info</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">resource</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="simstack.models.html#simstack.models.parameters.Resource" title="simstack.models.parameters.Resource"><span class="pre">Resource</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">user</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/runner_utils.html#clean_slurm_info"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.runner_utils.clean_slurm_info" title="Link to this definition">¶</a></dt>
2466
+ <dd><p>Clean up old slurm info entries</p>
2467
+ </dd></dl>
2468
+
2469
+ <dl class="py function">
2470
+ <dt class="sig sig-object py" id="simstack.util.runner_utils.get_job_info">
2471
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.runner_utils.</span></span><span class="sig-name descname"><span class="pre">get_job_info</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">job_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">task_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">ObjectId</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">resource</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="simstack.models.html#simstack.models.parameters.Resource" title="simstack.models.parameters.Resource"><span class="pre">Resource</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="simstack.models.html#simstack.models.slurm_info.SlurmInfo" title="simstack.models.slurm_info.SlurmInfo"><span class="pre">SlurmInfo</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/runner_utils.html#get_job_info"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.runner_utils.get_job_info" title="Link to this definition">¶</a></dt>
2472
+ <dd><p>Get job information from SLURM queue using squeue</p>
2473
+ </dd></dl>
2474
+
2475
+ <dl class="py function">
2476
+ <dt class="sig sig-object py" id="simstack.util.runner_utils.make_git_status_list">
2477
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.runner_utils.</span></span><span class="sig-name descname"><span class="pre">make_git_status_list</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/runner_utils.html#make_git_status_list"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.runner_utils.make_git_status_list" title="Link to this definition">¶</a></dt>
2478
+ <dd></dd></dl>
2479
+
2480
+ <dl class="py function">
2481
+ <dt class="sig sig-object py" id="simstack.util.runner_utils.run_squeue_for_job">
2482
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.runner_utils.</span></span><span class="sig-name descname"><span class="pre">run_squeue_for_job</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">job_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/simstack/util/runner_utils.html#run_squeue_for_job"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.runner_utils.run_squeue_for_job" title="Link to this definition">¶</a></dt>
2483
+ <dd></dd></dl>
2484
+
2485
+ </section>
2486
+ <section id="module-simstack.util.safe_code_executor">
2487
+ <span id="simstack-util-safe-code-executor-module"></span><h2>simstack.util.safe_code_executor module<a class="headerlink" href="#module-simstack.util.safe_code_executor" title="Link to this heading">¶</a></h2>
2488
+ <dl class="py function">
2489
+ <dt class="sig sig-object py" id="simstack.util.safe_code_executor.safe_code_executor">
2490
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.safe_code_executor.</span></span><span class="sig-name descname"><span class="pre">safe_code_executor</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">code_string</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">artifact_arguments</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="simstack.core.html#simstack.core.artifacts.ArtifactArguments" title="simstack.core.artifacts.ArtifactArguments"><span class="pre">ArtifactArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">30</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span></span></span><a class="reference internal" href="../../_modules/simstack/util/safe_code_executor.html#safe_code_executor"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.safe_code_executor.safe_code_executor" title="Link to this definition">¶</a></dt>
2491
+ <dd><p>Safely executes Python code from a string with a controlled environment.</p>
2492
+ <dl class="field-list simple">
2493
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
2494
+ <dd class="field-odd"><ul class="simple">
2495
+ <li><p><strong>code_string</strong> (<em>str</em>) – The Python code to execute</p></li>
2496
+ <li><p><strong>artifact_arguments</strong> (<a class="reference internal" href="simstack.core.html#simstack.core.artifacts.ArtifactArguments" title="simstack.core.artifacts.ArtifactArguments"><em>ArtifactArguments</em></a>) – Artifact arguments to be used in the execution environment</p></li>
2497
+ <li><p><strong>timeout</strong> (<em>int</em><em>, </em><em>optional</em>) – Maximum execution time in seconds before timeout</p></li>
2498
+ </ul>
2499
+ </dd>
2500
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
2501
+ <dd class="field-even"><p><dl class="simple">
2502
+ <dt>A dictionary containing:</dt><dd><p>’success’ (bool): Whether execution was successful
2503
+ ‘result’: The return value if successful
2504
+ ‘error’: Error message if unsuccessful
2505
+ ‘error_type’: Type of error if unsuccessful</p>
2506
+ </dd>
2507
+ </dl>
2508
+ </p>
2509
+ </dd>
2510
+ <dt class="field-odd">Return type<span class="colon">:</span></dt>
2511
+ <dd class="field-odd"><p>Dict</p>
2512
+ </dd>
2513
+ </dl>
2514
+ </dd></dl>
2515
+
2516
+ </section>
2517
+ <section id="module-simstack.util.sample_config">
2518
+ <span id="simstack-util-sample-config-module"></span><h2>simstack.util.sample_config module<a class="headerlink" href="#module-simstack.util.sample_config" title="Link to this heading">¶</a></h2>
2519
+ <dl class="py function">
2520
+ <dt class="sig sig-object py" id="simstack.util.sample_config.sample_config_writer_entrypoint">
2521
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.sample_config.</span></span><span class="sig-name descname"><span class="pre">sample_config_writer_entrypoint</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/simstack/util/sample_config.html#sample_config_writer_entrypoint"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.sample_config.sample_config_writer_entrypoint" title="Link to this definition">¶</a></dt>
2522
+ <dd><p>Entry point to write a sample simstack.toml configuration file.</p>
2523
+ </dd></dl>
2524
+
2525
+ </section>
2526
+ <section id="module-simstack.util.sensitive_content_filter">
2527
+ <span id="simstack-util-sensitive-content-filter-module"></span><h2>simstack.util.sensitive_content_filter module<a class="headerlink" href="#module-simstack.util.sensitive_content_filter" title="Link to this heading">¶</a></h2>
2528
+ <dl class="py function">
2529
+ <dt class="sig sig-object py" id="simstack.util.sensitive_content_filter.filter_file_content">
2530
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.sensitive_content_filter.</span></span><span class="sig-name descname"><span class="pre">filter_file_content</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/sensitive_content_filter.html#filter_file_content"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.sensitive_content_filter.filter_file_content" title="Link to this definition">¶</a></dt>
2531
+ <dd><p>Recursively searches through nested data structures to filter out sensitive content.
2532
+ Specifically looks for ‘content’ fields in dictionaries, especially within ‘files’ structures.</p>
2533
+ <dl class="field-list simple">
2534
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
2535
+ <dd class="field-odd"><p><strong>data</strong> – Any Python data structure (dict, list, etc.)</p>
2536
+ </dd>
2537
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
2538
+ <dd class="field-even"><p>The filtered data structure with sensitive content removed</p>
2539
+ </dd>
2540
+ </dl>
2541
+ </dd></dl>
2542
+
2543
+ </section>
2544
+ <section id="module-simstack.util.setup_logging">
2545
+ <span id="simstack-util-setup-logging-module"></span><h2>simstack.util.setup_logging module<a class="headerlink" href="#module-simstack.util.setup_logging" title="Link to this heading">¶</a></h2>
2546
+ <dl class="py function">
2547
+ <dt class="sig sig-object py" id="simstack.util.setup_logging.setup_logging">
2548
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.setup_logging.</span></span><span class="sig-name descname"><span class="pre">setup_logging</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">connection_string</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">db_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">log_level</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">20</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">console</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">log_format</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'%(asctime)s</span> <span class="pre">-</span> <span class="pre">%(name)-15s</span> <span class="pre">-</span> <span class="pre">%(levelname)-10s</span> <span class="pre">-</span> <span class="pre">%(filename)-20s:%(lineno)4d</span> <span class="pre">-</span> <span class="pre">%(message)s'</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/setup_logging.html#setup_logging"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.setup_logging.setup_logging" title="Link to this definition">¶</a></dt>
2549
+ <dd><p>Configures the root logger with specified logging level, handlers for both database
2550
+ and optionally the console.</p>
2551
+ <dl class="field-list simple">
2552
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
2553
+ <dd class="field-odd"><ul class="simple">
2554
+ <li><p><strong>log_format</strong></p></li>
2555
+ <li><p><strong>connection_string</strong> – A string representing the database connection.</p></li>
2556
+ <li><p><strong>db_name</strong> – A name of the database to log into.</p></li>
2557
+ <li><p><strong>log_level</strong> – Logging verbosity level, defaulting to logging.INFO.</p></li>
2558
+ <li><p><strong>console</strong> – A boolean indicating whether to log messages to the console.</p></li>
2559
+ </ul>
2560
+ </dd>
2561
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
2562
+ <dd class="field-even"><p>Configured root logger instance.</p>
2563
+ </dd>
2564
+ </dl>
2565
+ </dd></dl>
2566
+
2567
+ </section>
2568
+ <section id="module-simstack.util.submit_to_watchdog">
2569
+ <span id="simstack-util-submit-to-watchdog-module"></span><h2>simstack.util.submit_to_watchdog module<a class="headerlink" href="#module-simstack.util.submit_to_watchdog" title="Link to this heading">¶</a></h2>
2570
+ <dl class="py class">
2571
+ <dt class="sig sig-object py" id="simstack.util.submit_to_watchdog.WatchdogResult">
2572
+ <span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.submit_to_watchdog.</span></span><span class="sig-name descname"><span class="pre">WatchdogResult</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">job_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">status</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">returncode</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stdout</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stderr</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">paths</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/submit_to_watchdog.html#WatchdogResult"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.submit_to_watchdog.WatchdogResult" title="Link to this definition">¶</a></dt>
2573
+ <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">BaseModel</span></code></p>
2574
+ <dl class="py attribute">
2575
+ <dt class="sig sig-object py" id="simstack.util.submit_to_watchdog.WatchdogResult.job_id">
2576
+ <span class="sig-name descname"><span class="pre">job_id</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></span><a class="headerlink" href="#simstack.util.submit_to_watchdog.WatchdogResult.job_id" title="Link to this definition">¶</a></dt>
2577
+ <dd></dd></dl>
2578
+
2579
+ <dl class="py attribute">
2580
+ <dt class="sig sig-object py" id="simstack.util.submit_to_watchdog.WatchdogResult.model_config">
2581
+ <span class="sig-name descname"><span class="pre">model_config</span></span><span class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></span><a class="headerlink" href="#simstack.util.submit_to_watchdog.WatchdogResult.model_config" title="Link to this definition">¶</a></dt>
2582
+ <dd><p>Configuration for the model, should be a dictionary conforming to [<cite>ConfigDict</cite>][pydantic.config.ConfigDict].</p>
2583
+ </dd></dl>
2584
+
2585
+ <dl class="py attribute">
2586
+ <dt class="sig sig-object py" id="simstack.util.submit_to_watchdog.WatchdogResult.paths">
2587
+ <span class="sig-name descname"><span class="pre">paths</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span><a class="headerlink" href="#simstack.util.submit_to_watchdog.WatchdogResult.paths" title="Link to this definition">¶</a></dt>
2588
+ <dd></dd></dl>
2589
+
2590
+ <dl class="py attribute">
2591
+ <dt class="sig sig-object py" id="simstack.util.submit_to_watchdog.WatchdogResult.returncode">
2592
+ <span class="sig-name descname"><span class="pre">returncode</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><a class="headerlink" href="#simstack.util.submit_to_watchdog.WatchdogResult.returncode" title="Link to this definition">¶</a></dt>
2593
+ <dd></dd></dl>
2594
+
2595
+ <dl class="py attribute">
2596
+ <dt class="sig sig-object py" id="simstack.util.submit_to_watchdog.WatchdogResult.status">
2597
+ <span class="sig-name descname"><span class="pre">status</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></span><a class="headerlink" href="#simstack.util.submit_to_watchdog.WatchdogResult.status" title="Link to this definition">¶</a></dt>
2598
+ <dd></dd></dl>
2599
+
2600
+ <dl class="py attribute">
2601
+ <dt class="sig sig-object py" id="simstack.util.submit_to_watchdog.WatchdogResult.stderr">
2602
+ <span class="sig-name descname"><span class="pre">stderr</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></span><a class="headerlink" href="#simstack.util.submit_to_watchdog.WatchdogResult.stderr" title="Link to this definition">¶</a></dt>
2603
+ <dd></dd></dl>
2604
+
2605
+ <dl class="py attribute">
2606
+ <dt class="sig sig-object py" id="simstack.util.submit_to_watchdog.WatchdogResult.stdout">
2607
+ <span class="sig-name descname"><span class="pre">stdout</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></span><a class="headerlink" href="#simstack.util.submit_to_watchdog.WatchdogResult.stdout" title="Link to this definition">¶</a></dt>
2608
+ <dd></dd></dl>
2609
+
2610
+ </dd></dl>
2611
+
2612
+ <dl class="py function">
2613
+ <dt class="sig sig-object py" id="simstack.util.submit_to_watchdog.submit_to_watchdog">
2614
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.submit_to_watchdog.</span></span><span class="sig-name descname"><span class="pre">submit_to_watchdog</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">command</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">job_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">queue_dir</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Path</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">PosixPath('/home/runner/work/simstack/simstack/queue')</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">env</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">dict</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cwd</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#simstack.util.submit_to_watchdog.WatchdogResult" title="simstack.util.submit_to_watchdog.WatchdogResult"><span class="pre">WatchdogResult</span></a></span></span><a class="reference internal" href="../../_modules/simstack/util/submit_to_watchdog.html#submit_to_watchdog"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.submit_to_watchdog.submit_to_watchdog" title="Link to this definition">¶</a></dt>
2615
+ <dd><p>Submit a command to be executed by the file-queue watcher.
2616
+ Returns a WatchdogResult with status, exit_code, stdout, stderr, and paths.</p>
2617
+ </dd></dl>
2618
+
2619
+ </section>
2620
+ <section id="module-simstack.util.toml_reader">
2621
+ <span id="simstack-util-toml-reader-module"></span><h2>simstack.util.toml_reader module<a class="headerlink" href="#module-simstack.util.toml_reader" title="Link to this heading">¶</a></h2>
2622
+ <dl class="py class">
2623
+ <dt class="sig sig-object py" id="simstack.util.toml_reader.TomlReader">
2624
+ <span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">simstack.util.toml_reader.</span></span><span class="sig-name descname"><span class="pre">TomlReader</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">config_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">config_file</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Path</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">PosixPath('simstack.toml')</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/toml_reader.html#TomlReader"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.toml_reader.TomlReader" title="Link to this definition">¶</a></dt>
2625
+ <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
2626
+ <dl class="py method">
2627
+ <dt class="sig sig-object py" id="simstack.util.toml_reader.TomlReader.build_routes">
2628
+ <span class="sig-name descname"><span class="pre">build_routes</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/toml_reader.html#TomlReader.build_routes"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.toml_reader.TomlReader.build_routes" title="Link to this definition">¶</a></dt>
2629
+ <dd></dd></dl>
2630
+
2631
+ <dl class="py property">
2632
+ <dt class="sig sig-object py" id="simstack.util.toml_reader.TomlReader.config">
2633
+ <span class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">config</span></span><a class="headerlink" href="#simstack.util.toml_reader.TomlReader.config" title="Link to this definition">¶</a></dt>
2634
+ <dd></dd></dl>
2635
+
2636
+ <dl class="py method">
2637
+ <dt class="sig sig-object py" id="simstack.util.toml_reader.TomlReader.get">
2638
+ <span class="sig-name descname"><span class="pre">get</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">key</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">default</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/toml_reader.html#TomlReader.get"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.toml_reader.TomlReader.get" title="Link to this definition">¶</a></dt>
2639
+ <dd></dd></dl>
2640
+
2641
+ <dl class="py method">
2642
+ <dt class="sig sig-object py" id="simstack.util.toml_reader.TomlReader.get_allowed_resources">
2643
+ <span class="sig-name descname"><span class="pre">get_allowed_resources</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/toml_reader.html#TomlReader.get_allowed_resources"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.toml_reader.TomlReader.get_allowed_resources" title="Link to this definition">¶</a></dt>
2644
+ <dd></dd></dl>
2645
+
2646
+ <dl class="py method">
2647
+ <dt class="sig sig-object py" id="simstack.util.toml_reader.TomlReader.get_git_list">
2648
+ <span class="sig-name descname"><span class="pre">get_git_list</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/toml_reader.html#TomlReader.get_git_list"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.toml_reader.TomlReader.get_git_list" title="Link to this definition">¶</a></dt>
2649
+ <dd></dd></dl>
2650
+
2651
+ <dl class="py method">
2652
+ <dt class="sig sig-object py" id="simstack.util.toml_reader.TomlReader.get_resource_definition">
2653
+ <span class="sig-name descname"><span class="pre">get_resource_definition</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">resource_str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="simstack.models.html#simstack.models.resource_definition.ResourceDefinition" title="simstack.models.resource_definition.ResourceDefinition"><span class="pre">ResourceDefinition</span></a></span></span><a class="reference internal" href="../../_modules/simstack/util/toml_reader.html#TomlReader.get_resource_definition"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.toml_reader.TomlReader.get_resource_definition" title="Link to this definition">¶</a></dt>
2654
+ <dd><p>Retrieves the resource definition for the given resource string from the TOML configuration.
2655
+ Raises ValueError if the resource is not allowed or if the resource definition is not found.
2656
+ Sets the allowed resources list from the config file.</p>
2657
+ </dd></dl>
2658
+
2659
+ <dl class="py method">
2660
+ <dt class="sig sig-object py" id="simstack.util.toml_reader.TomlReader.get_routes">
2661
+ <span class="sig-name descname"><span class="pre">get_routes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">resource_str</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/toml_reader.html#TomlReader.get_routes"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.toml_reader.TomlReader.get_routes" title="Link to this definition">¶</a></dt>
2662
+ <dd></dd></dl>
2663
+
2664
+ <dl class="py method">
2665
+ <dt class="sig sig-object py" id="simstack.util.toml_reader.TomlReader.initialize_path_manager">
2666
+ <span class="sig-name descname"><span class="pre">initialize_path_manager</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/toml_reader.html#TomlReader.initialize_path_manager"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.toml_reader.TomlReader.initialize_path_manager" title="Link to this definition">¶</a></dt>
2667
+ <dd></dd></dl>
2668
+
2669
+ <dl class="py method">
2670
+ <dt class="sig sig-object py" id="simstack.util.toml_reader.TomlReader.use_db">
2671
+ <span class="sig-name descname"><span class="pre">use_db</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/simstack/util/toml_reader.html#TomlReader.use_db"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.toml_reader.TomlReader.use_db" title="Link to this definition">¶</a></dt>
2672
+ <dd></dd></dl>
2673
+
2674
+ </dd></dl>
2675
+
2676
+ </section>
2677
+ <section id="module-simstack.util.transform_file_name">
2678
+ <span id="simstack-util-transform-file-name-module"></span><h2>simstack.util.transform_file_name module<a class="headerlink" href="#module-simstack.util.transform_file_name" title="Link to this heading">¶</a></h2>
2679
+ <dl class="py function">
2680
+ <dt class="sig sig-object py" id="simstack.util.transform_file_name.transform_file_name">
2681
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.transform_file_name.</span></span><span class="sig-name descname"><span class="pre">transform_file_name</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">path_str</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">project_root</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Path</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Path</span></span></span><a class="reference internal" href="../../_modules/simstack/util/transform_file_name.html#transform_file_name"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.transform_file_name.transform_file_name" title="Link to this definition">¶</a></dt>
2682
+ <dd><p>Transform a string path by substituting environment variables.</p>
2683
+ <dl class="field-list simple">
2684
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
2685
+ <dd class="field-odd"><ul class="simple">
2686
+ <li><p><strong>path_str</strong> – String containing path with optional environment variables
2687
+ ($HOME, $PROJECT, $TEMP)</p></li>
2688
+ <li><p><strong>project_root</strong> – Optional project root directory. If not provided, it will be automatically detected.</p></li>
2689
+ </ul>
2690
+ </dd>
2691
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
2692
+ <dd class="field-even"><p>Path object with resolved environment variables</p>
2693
+ </dd>
2694
+ <dt class="field-odd">Raises<span class="colon">:</span></dt>
2695
+ <dd class="field-odd"><p><strong>FileNotFoundError</strong> – If the resolved path does not exist</p>
2696
+ </dd>
2697
+ </dl>
2698
+ </dd></dl>
2699
+
2700
+ </section>
2701
+ <section id="module-simstack.util.ui_tools">
2702
+ <span id="simstack-util-ui-tools-module"></span><h2>simstack.util.ui_tools module<a class="headerlink" href="#module-simstack.util.ui_tools" title="Link to this heading">¶</a></h2>
2703
+ <dl class="py function">
2704
+ <dt class="sig sig-object py" id="simstack.util.ui_tools.ui_hide_fields">
2705
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.ui_tools.</span></span><span class="sig-name descname"><span class="pre">ui_hide_fields</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ui_schema</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">fields</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">dict</span></span></span><a class="reference internal" href="../../_modules/simstack/util/ui_tools.html#ui_hide_fields"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.ui_tools.ui_hide_fields" title="Link to this definition">¶</a></dt>
2706
+ <dd><p>Hides specified fields in the JSON schema.</p>
2707
+ <dl class="field-list simple">
2708
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
2709
+ <dd class="field-odd"><ul class="simple">
2710
+ <li><p><strong>ui_schema</strong> – The original JSON schema</p></li>
2711
+ <li><p><strong>fields</strong> – List of field names to hide</p></li>
2712
+ </ul>
2713
+ </dd>
2714
+ </dl>
2715
+ </dd></dl>
2716
+
2717
+ <dl class="py function">
2718
+ <dt class="sig sig-object py" id="simstack.util.ui_tools.ui_line_vector">
2719
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.ui_tools.</span></span><span class="sig-name descname"><span class="pre">ui_line_vector</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ui_schema</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">field</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/simstack/util/ui_tools.html#ui_line_vector"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.ui_tools.ui_line_vector" title="Link to this definition">¶</a></dt>
2720
+ <dd><p>Modifies the JSON schema to represent a line vector.</p>
2721
+ <dl class="field-list simple">
2722
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
2723
+ <dd class="field-odd"><p><strong>ui_schema</strong> – The original JSON schema</p>
2724
+ </dd>
2725
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
2726
+ <dd class="field-even"><p>Modified JSON schema with line vector representation</p>
2727
+ </dd>
2728
+ </dl>
2729
+ </dd></dl>
2730
+
2731
+ <dl class="py function">
2732
+ <dt class="sig sig-object py" id="simstack.util.ui_tools.ui_make_foldable">
2733
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.ui_tools.</span></span><span class="sig-name descname"><span class="pre">ui_make_foldable</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ui_schema</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">field</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">dict</span></span></span><a class="reference internal" href="../../_modules/simstack/util/ui_tools.html#ui_make_foldable"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.ui_tools.ui_make_foldable" title="Link to this definition">¶</a></dt>
2734
+ <dd><p>Adds a foldable section to the JSON schema.</p>
2735
+ <dl class="field-list simple">
2736
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
2737
+ <dd class="field-odd"><ul class="simple">
2738
+ <li><p><strong>field</strong> – The field to be made foldable</p></li>
2739
+ <li><p><strong>ui_schema</strong> – The original ui_schema schema</p></li>
2740
+ </ul>
2741
+ </dd>
2742
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
2743
+ <dd class="field-even"><p>Modified ui_schema with foldable section</p>
2744
+ </dd>
2745
+ </dl>
2746
+ </dd></dl>
2747
+
2748
+ <dl class="py function">
2749
+ <dt class="sig sig-object py" id="simstack.util.ui_tools.ui_make_properties_optional">
2750
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.ui_tools.</span></span><span class="sig-name descname"><span class="pre">ui_make_properties_optional</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">json_schema</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">properties</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">option_field</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'Show</span> <span class="pre">More'</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">dict</span></span></span><a class="reference internal" href="../../_modules/simstack/util/ui_tools.html#ui_make_properties_optional"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.ui_tools.ui_make_properties_optional" title="Link to this definition">¶</a></dt>
2751
+ <dd><p>Modifies a JSON schema to make specified properties visible only when an option is enabled.</p>
2752
+ <dl class="field-list simple">
2753
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
2754
+ <dd class="field-odd"><ul class="simple">
2755
+ <li><p><strong>cls</strong> – The class to which the JSON schema belongs</p></li>
2756
+ <li><p><strong>json_schema</strong> – The original JSON schema</p></li>
2757
+ <li><p><strong>properties</strong> – List of property names to make optional</p></li>
2758
+ <li><p><strong>option_field</strong> – Name of the boolean field that controls visibility</p></li>
2759
+ </ul>
2760
+ </dd>
2761
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
2762
+ <dd class="field-even"><p>Modified JSON schema with dependencies</p>
2763
+ </dd>
2764
+ </dl>
2765
+ </dd></dl>
2766
+
2767
+ <dl class="py function">
2768
+ <dt class="sig sig-object py" id="simstack.util.ui_tools.ui_make_title">
2769
+ <span class="sig-prename descclassname"><span class="pre">simstack.util.ui_tools.</span></span><span class="sig-name descname"><span class="pre">ui_make_title</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cls</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ui_schema</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">field</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">title</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">dict</span></span></span><a class="reference internal" href="../../_modules/simstack/util/ui_tools.html#ui_make_title"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#simstack.util.ui_tools.ui_make_title" title="Link to this definition">¶</a></dt>
2770
+ <dd><p>Adds a title to the JSON schema.</p>
2771
+ <dl class="field-list simple">
2772
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
2773
+ <dd class="field-odd"><ul class="simple">
2774
+ <li><p><strong>cls</strong> – The class to which the JSON schema belongs</p></li>
2775
+ <li><p><strong>ui_schema</strong> – The original ui_schema schema</p></li>
2776
+ <li><p><strong>title</strong> – Title to be added</p></li>
2777
+ </ul>
2778
+ </dd>
2779
+ <dt class="field-even">Returns<span class="colon">:</span></dt>
2780
+ <dd class="field-even"><p>Modified JSON schema with title</p>
2781
+ </dd>
2782
+ </dl>
2783
+ </dd></dl>
2784
+
2785
+ </section>
2786
+ <section id="module-simstack.util">
2787
+ <span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-simstack.util" title="Link to this heading">¶</a></h2>
2788
+ </section>
2789
+ </section>
2790
+
2791
+ </article>
2792
+ </div>
2793
+ <footer>
2794
+
2795
+ <div class="related-pages">
2796
+
2797
+ <a class="prev-page" href="simstack.tables.html">
2798
+ <svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
2799
+ <div class="page-info">
2800
+ <div class="context">
2801
+ <span>Previous</span>
2802
+ </div>
2803
+
2804
+ <div class="title">simstack.tables package</div>
2805
+
2806
+ </div>
2807
+ </a>
2808
+ </div>
2809
+ <div class="bottom-of-page">
2810
+ <div class="left-details">
2811
+ <div class="copyright">
2812
+ Copyright &#169; 2026, Wolfgang Wenzel
2813
+ </div>
2814
+ Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
2815
+
2816
+ <a href="https://github.com/pradyunsg/furo">Furo</a>
2817
+
2818
+ </div>
2819
+ <div class="right-details">
2820
+
2821
+ </div>
2822
+ </div>
2823
+
2824
+ </footer>
2825
+ </div>
2826
+ <aside class="toc-drawer">
2827
+
2828
+
2829
+ <div class="toc-sticky toc-scroll">
2830
+ <div class="toc-title-container">
2831
+ <span class="toc-title">
2832
+ On this page
2833
+ </span>
2834
+ </div>
2835
+ <div class="toc-tree-container">
2836
+ <div class="toc-tree">
2837
+ <ul>
2838
+ <li><a class="reference internal" href="#">simstack.util package</a><ul>
2839
+ <li><a class="reference internal" href="#submodules">Submodules</a></li>
2840
+ <li><a class="reference internal" href="#module-simstack.util.async_zip_utils">simstack.util.async_zip_utils module</a><ul>
2841
+ <li><a class="reference internal" href="#simstack.util.async_zip_utils.async_zip"><code class="docutils literal notranslate"><span class="pre">async_zip()</span></code></a></li>
2842
+ <li><a class="reference internal" href="#simstack.util.async_zip_utils.async_zip_multiple"><code class="docutils literal notranslate"><span class="pre">async_zip_multiple()</span></code></a></li>
2843
+ </ul>
2844
+ </li>
2845
+ <li><a class="reference internal" href="#module-simstack.util.b64mixin">simstack.util.b64mixin module</a><ul>
2846
+ <li><a class="reference internal" href="#simstack.util.b64mixin.BytesB64Mixin"><code class="docutils literal notranslate"><span class="pre">BytesB64Mixin</span></code></a><ul>
2847
+ <li><a class="reference internal" href="#simstack.util.b64mixin.BytesB64Mixin.model_config"><code class="docutils literal notranslate"><span class="pre">BytesB64Mixin.model_config</span></code></a></li>
2848
+ </ul>
2849
+ </li>
2850
+ </ul>
2851
+ </li>
2852
+ <li><a class="reference internal" href="#module-simstack.util.cleaned_json_schema">simstack.util.cleaned_json_schema module</a><ul>
2853
+ <li><a class="reference internal" href="#simstack.util.cleaned_json_schema.cleaned_json_schema"><code class="docutils literal notranslate"><span class="pre">cleaned_json_schema()</span></code></a></li>
2854
+ </ul>
2855
+ </li>
2856
+ <li><a class="reference internal" href="#module-simstack.util.config_reader">simstack.util.config_reader module</a><ul>
2857
+ <li><a class="reference internal" href="#simstack.util.config_reader.ConfigReader"><code class="docutils literal notranslate"><span class="pre">ConfigReader</span></code></a><ul>
2858
+ <li><a class="reference internal" href="#simstack.util.config_reader.ConfigReader.create"><code class="docutils literal notranslate"><span class="pre">ConfigReader.create()</span></code></a></li>
2859
+ <li><a class="reference internal" href="#simstack.util.config_reader.ConfigReader.docker"><code class="docutils literal notranslate"><span class="pre">ConfigReader.docker</span></code></a></li>
2860
+ <li><a class="reference internal" href="#simstack.util.config_reader.ConfigReader.environment_start"><code class="docutils literal notranslate"><span class="pre">ConfigReader.environment_start</span></code></a></li>
2861
+ <li><a class="reference internal" href="#simstack.util.config_reader.ConfigReader.git_list"><code class="docutils literal notranslate"><span class="pre">ConfigReader.git_list</span></code></a></li>
2862
+ <li><a class="reference internal" href="#simstack.util.config_reader.ConfigReader.hostname"><code class="docutils literal notranslate"><span class="pre">ConfigReader.hostname</span></code></a></li>
2863
+ <li><a class="reference internal" href="#simstack.util.config_reader.ConfigReader.project_root"><code class="docutils literal notranslate"><span class="pre">ConfigReader.project_root</span></code></a></li>
2864
+ <li><a class="reference internal" href="#simstack.util.config_reader.ConfigReader.python_paths"><code class="docutils literal notranslate"><span class="pre">ConfigReader.python_paths</span></code></a></li>
2865
+ <li><a class="reference internal" href="#simstack.util.config_reader.ConfigReader.resource"><code class="docutils literal notranslate"><span class="pre">ConfigReader.resource</span></code></a></li>
2866
+ <li><a class="reference internal" href="#simstack.util.config_reader.ConfigReader.server_token"><code class="docutils literal notranslate"><span class="pre">ConfigReader.server_token</span></code></a></li>
2867
+ <li><a class="reference internal" href="#simstack.util.config_reader.ConfigReader.server_url"><code class="docutils literal notranslate"><span class="pre">ConfigReader.server_url</span></code></a></li>
2868
+ <li><a class="reference internal" href="#simstack.util.config_reader.ConfigReader.ssh_key"><code class="docutils literal notranslate"><span class="pre">ConfigReader.ssh_key</span></code></a></li>
2869
+ <li><a class="reference internal" href="#simstack.util.config_reader.ConfigReader.workdir"><code class="docutils literal notranslate"><span class="pre">ConfigReader.workdir</span></code></a></li>
2870
+ </ul>
2871
+ </li>
2872
+ </ul>
2873
+ </li>
2874
+ <li><a class="reference internal" href="#module-simstack.util.custom_model_dump">simstack.util.custom_model_dump module</a><ul>
2875
+ <li><a class="reference internal" href="#simstack.util.custom_model_dump.custom_model_dump"><code class="docutils literal notranslate"><span class="pre">custom_model_dump()</span></code></a></li>
2876
+ </ul>
2877
+ </li>
2878
+ <li><a class="reference internal" href="#module-simstack.util.database_information">simstack.util.database_information module</a><ul>
2879
+ <li><a class="reference internal" href="#simstack.util.database_information.DatabaseInformation"><code class="docutils literal notranslate"><span class="pre">DatabaseInformation</span></code></a><ul>
2880
+ <li><a class="reference internal" href="#simstack.util.database_information.DatabaseInformation._db_name"><code class="docutils literal notranslate"><span class="pre">DatabaseInformation._db_name</span></code></a></li>
2881
+ <li><a class="reference internal" href="#simstack.util.database_information.DatabaseInformation._connection_string"><code class="docutils literal notranslate"><span class="pre">DatabaseInformation._connection_string</span></code></a></li>
2882
+ <li><a class="reference internal" href="#simstack.util.database_information.DatabaseInformation.from_config_file"><code class="docutils literal notranslate"><span class="pre">DatabaseInformation.from_config_file()</span></code></a></li>
2883
+ <li><a class="reference internal" href="#simstack.util.database_information.DatabaseInformation.connection_string"><code class="docutils literal notranslate"><span class="pre">DatabaseInformation.connection_string</span></code></a></li>
2884
+ <li><a class="reference internal" href="#simstack.util.database_information.DatabaseInformation.db_name"><code class="docutils literal notranslate"><span class="pre">DatabaseInformation.db_name</span></code></a></li>
2885
+ <li><a class="reference internal" href="#simstack.util.database_information.DatabaseInformation.db_type"><code class="docutils literal notranslate"><span class="pre">DatabaseInformation.db_type</span></code></a></li>
2886
+ <li><a class="reference internal" href="#simstack.util.database_information.DatabaseInformation.from_config"><code class="docutils literal notranslate"><span class="pre">DatabaseInformation.from_config()</span></code></a></li>
2887
+ <li><a class="reference internal" href="#simstack.util.database_information.DatabaseInformation.from_db_info"><code class="docutils literal notranslate"><span class="pre">DatabaseInformation.from_db_info()</span></code></a></li>
2888
+ <li><a class="reference internal" href="#simstack.util.database_information.DatabaseInformation.from_db_info_or_db"><code class="docutils literal notranslate"><span class="pre">DatabaseInformation.from_db_info_or_db()</span></code></a></li>
2889
+ <li><a class="reference internal" href="#simstack.util.database_information.DatabaseInformation.get_information"><code class="docutils literal notranslate"><span class="pre">DatabaseInformation.get_information()</span></code></a></li>
2890
+ <li><a class="reference internal" href="#simstack.util.database_information.DatabaseInformation.server_token"><code class="docutils literal notranslate"><span class="pre">DatabaseInformation.server_token</span></code></a></li>
2891
+ <li><a class="reference internal" href="#simstack.util.database_information.DatabaseInformation.server_url"><code class="docutils literal notranslate"><span class="pre">DatabaseInformation.server_url</span></code></a></li>
2892
+ </ul>
2893
+ </li>
2894
+ </ul>
2895
+ </li>
2896
+ <li><a class="reference internal" href="#module-simstack.util.db">simstack.util.db module</a><ul>
2897
+ <li><a class="reference internal" href="#simstack.util.db.Database"><code class="docutils literal notranslate"><span class="pre">Database</span></code></a><ul>
2898
+ <li><a class="reference internal" href="#simstack.util.db.Database.apply_resource_assignment_to_node_registry"><code class="docutils literal notranslate"><span class="pre">Database.apply_resource_assignment_to_node_registry()</span></code></a></li>
2899
+ <li><a class="reference internal" href="#simstack.util.db.Database.client"><code class="docutils literal notranslate"><span class="pre">Database.client</span></code></a></li>
2900
+ <li><a class="reference internal" href="#simstack.util.db.Database.close"><code class="docutils literal notranslate"><span class="pre">Database.close()</span></code></a></li>
2901
+ <li><a class="reference internal" href="#simstack.util.db.Database.collection"><code class="docutils literal notranslate"><span class="pre">Database.collection()</span></code></a></li>
2902
+ <li><a class="reference internal" href="#simstack.util.db.Database.connection_string"><code class="docutils literal notranslate"><span class="pre">Database.connection_string</span></code></a></li>
2903
+ <li><a class="reference internal" href="#simstack.util.db.Database.core_engine"><code class="docutils literal notranslate"><span class="pre">Database.core_engine</span></code></a></li>
2904
+ <li><a class="reference internal" href="#simstack.util.db.Database.databae_type"><code class="docutils literal notranslate"><span class="pre">Database.databae_type</span></code></a></li>
2905
+ <li><a class="reference internal" href="#simstack.util.db.Database.database"><code class="docutils literal notranslate"><span class="pre">Database.database</span></code></a></li>
2906
+ <li><a class="reference internal" href="#simstack.util.db.Database.database_name"><code class="docutils literal notranslate"><span class="pre">Database.database_name</span></code></a></li>
2907
+ <li><a class="reference internal" href="#simstack.util.db.Database.delete"><code class="docutils literal notranslate"><span class="pre">Database.delete()</span></code></a></li>
2908
+ <li><a class="reference internal" href="#simstack.util.db.Database.find"><code class="docutils literal notranslate"><span class="pre">Database.find()</span></code></a></li>
2909
+ <li><a class="reference internal" href="#simstack.util.db.Database.find_all"><code class="docutils literal notranslate"><span class="pre">Database.find_all()</span></code></a></li>
2910
+ <li><a class="reference internal" href="#simstack.util.db.Database.find_all_artifacts"><code class="docutils literal notranslate"><span class="pre">Database.find_all_artifacts()</span></code></a></li>
2911
+ <li><a class="reference internal" href="#simstack.util.db.Database.find_artifact_mappings"><code class="docutils literal notranslate"><span class="pre">Database.find_artifact_mappings()</span></code></a></li>
2912
+ <li><a class="reference internal" href="#simstack.util.db.Database.find_one"><code class="docutils literal notranslate"><span class="pre">Database.find_one()</span></code></a></li>
2913
+ <li><a class="reference internal" href="#simstack.util.db.Database.find_one_by_model_name"><code class="docutils literal notranslate"><span class="pre">Database.find_one_by_model_name()</span></code></a></li>
2914
+ <li><a class="reference internal" href="#simstack.util.db.Database.from_db_info"><code class="docutils literal notranslate"><span class="pre">Database.from_db_info()</span></code></a></li>
2915
+ <li><a class="reference internal" href="#simstack.util.db.Database.get_collection"><code class="docutils literal notranslate"><span class="pre">Database.get_collection()</span></code></a></li>
2916
+ <li><a class="reference internal" href="#simstack.util.db.Database.load_task"><code class="docutils literal notranslate"><span class="pre">Database.load_task()</span></code></a></li>
2917
+ <li><a class="reference internal" href="#simstack.util.db.Database.load_task_by_id"><code class="docutils literal notranslate"><span class="pre">Database.load_task_by_id()</span></code></a></li>
2918
+ <li><a class="reference internal" href="#simstack.util.db.Database.load_waiting_tasks_for_resource"><code class="docutils literal notranslate"><span class="pre">Database.load_waiting_tasks_for_resource()</span></code></a></li>
2919
+ <li><a class="reference internal" href="#simstack.util.db.Database.ping"><code class="docutils literal notranslate"><span class="pre">Database.ping()</span></code></a></li>
2920
+ <li><a class="reference internal" href="#simstack.util.db.Database.raw_database"><code class="docutils literal notranslate"><span class="pre">Database.raw_database</span></code></a></li>
2921
+ <li><a class="reference internal" href="#simstack.util.db.Database.reset_database"><code class="docutils literal notranslate"><span class="pre">Database.reset_database()</span></code></a></li>
2922
+ <li><a class="reference internal" href="#simstack.util.db.Database.save"><code class="docutils literal notranslate"><span class="pre">Database.save()</span></code></a></li>
2923
+ <li><a class="reference internal" href="#simstack.util.db.Database.save_unchecked"><code class="docutils literal notranslate"><span class="pre">Database.save_unchecked()</span></code></a></li>
2924
+ <li><a class="reference internal" href="#simstack.util.db.Database.server_token"><code class="docutils literal notranslate"><span class="pre">Database.server_token</span></code></a></li>
2925
+ <li><a class="reference internal" href="#simstack.util.db.Database.server_url"><code class="docutils literal notranslate"><span class="pre">Database.server_url</span></code></a></li>
2926
+ <li><a class="reference internal" href="#simstack.util.db.Database.stats"><code class="docutils literal notranslate"><span class="pre">Database.stats()</span></code></a></li>
2927
+ </ul>
2928
+ </li>
2929
+ <li><a class="reference internal" href="#simstack.util.db.find_all_artifacts_for_database"><code class="docutils literal notranslate"><span class="pre">find_all_artifacts_for_database()</span></code></a></li>
2930
+ </ul>
2931
+ </li>
2932
+ <li><a class="reference internal" href="#module-simstack.util.db_logger">simstack.util.db_logger module</a><ul>
2933
+ <li><a class="reference internal" href="#simstack.util.db_logger.DBLogHandler"><code class="docutils literal notranslate"><span class="pre">DBLogHandler</span></code></a><ul>
2934
+ <li><a class="reference internal" href="#simstack.util.db_logger.DBLogHandler.close"><code class="docutils literal notranslate"><span class="pre">DBLogHandler.close()</span></code></a></li>
2935
+ <li><a class="reference internal" href="#simstack.util.db_logger.DBLogHandler.create_log_entry"><code class="docutils literal notranslate"><span class="pre">DBLogHandler.create_log_entry()</span></code></a></li>
2936
+ <li><a class="reference internal" href="#simstack.util.db_logger.DBLogHandler.emit"><code class="docutils literal notranslate"><span class="pre">DBLogHandler.emit()</span></code></a></li>
2937
+ </ul>
2938
+ </li>
2939
+ <li><a class="reference internal" href="#simstack.util.db_logger.extract_resource_id"><code class="docutils literal notranslate"><span class="pre">extract_resource_id()</span></code></a></li>
2940
+ <li><a class="reference internal" href="#simstack.util.db_logger.extract_task_id"><code class="docutils literal notranslate"><span class="pre">extract_task_id()</span></code></a></li>
2941
+ </ul>
2942
+ </li>
2943
+ <li><a class="reference internal" href="#module-simstack.util.default_from_dict">simstack.util.default_from_dict module</a><ul>
2944
+ <li><a class="reference internal" href="#simstack.util.default_from_dict.default_from_dict"><code class="docutils literal notranslate"><span class="pre">default_from_dict()</span></code></a></li>
2945
+ <li><a class="reference internal" href="#simstack.util.default_from_dict.default_from_model"><code class="docutils literal notranslate"><span class="pre">default_from_model()</span></code></a></li>
2946
+ </ul>
2947
+ </li>
2948
+ <li><a class="reference internal" href="#module-simstack.util.directory_iterator">simstack.util.directory_iterator module</a><ul>
2949
+ <li><a class="reference internal" href="#simstack.util.directory_iterator.DirectoryPath"><code class="docutils literal notranslate"><span class="pre">DirectoryPath</span></code></a><ul>
2950
+ <li><a class="reference internal" href="#simstack.util.directory_iterator.DirectoryPath.add_excluded_pattern"><code class="docutils literal notranslate"><span class="pre">DirectoryPath.add_excluded_pattern()</span></code></a></li>
2951
+ <li><a class="reference internal" href="#simstack.util.directory_iterator.DirectoryPath.get_directories_list"><code class="docutils literal notranslate"><span class="pre">DirectoryPath.get_directories_list()</span></code></a></li>
2952
+ <li><a class="reference internal" href="#simstack.util.directory_iterator.DirectoryPath.get_files_list"><code class="docutils literal notranslate"><span class="pre">DirectoryPath.get_files_list()</span></code></a></li>
2953
+ <li><a class="reference internal" href="#simstack.util.directory_iterator.DirectoryPath.iterate_directories"><code class="docutils literal notranslate"><span class="pre">DirectoryPath.iterate_directories()</span></code></a></li>
2954
+ <li><a class="reference internal" href="#simstack.util.directory_iterator.DirectoryPath.iterate_files"><code class="docutils literal notranslate"><span class="pre">DirectoryPath.iterate_files()</span></code></a></li>
2955
+ <li><a class="reference internal" href="#simstack.util.directory_iterator.DirectoryPath.remove_excluded_pattern"><code class="docutils literal notranslate"><span class="pre">DirectoryPath.remove_excluded_pattern()</span></code></a></li>
2956
+ </ul>
2957
+ </li>
2958
+ <li><a class="reference internal" href="#simstack.util.directory_iterator.find_python_files_with_exclusions"><code class="docutils literal notranslate"><span class="pre">find_python_files_with_exclusions()</span></code></a></li>
2959
+ </ul>
2960
+ </li>
2961
+ <li><a class="reference internal" href="#module-simstack.util.docstring_parser">simstack.util.docstring_parser module</a><ul>
2962
+ <li><a class="reference internal" href="#simstack.util.docstring_parser.DocstringParser"><code class="docutils literal notranslate"><span class="pre">DocstringParser</span></code></a><ul>
2963
+ <li><a class="reference internal" href="#simstack.util.docstring_parser.DocstringParser.as_dict"><code class="docutils literal notranslate"><span class="pre">DocstringParser.as_dict()</span></code></a></li>
2964
+ <li><a class="reference internal" href="#simstack.util.docstring_parser.DocstringParser.called_nodes"><code class="docutils literal notranslate"><span class="pre">DocstringParser.called_nodes()</span></code></a></li>
2965
+ <li><a class="reference internal" href="#simstack.util.docstring_parser.DocstringParser.description"><code class="docutils literal notranslate"><span class="pre">DocstringParser.description()</span></code></a></li>
2966
+ <li><a class="reference internal" href="#simstack.util.docstring_parser.DocstringParser.params"><code class="docutils literal notranslate"><span class="pre">DocstringParser.params()</span></code></a></li>
2967
+ <li><a class="reference internal" href="#simstack.util.docstring_parser.DocstringParser.raises"><code class="docutils literal notranslate"><span class="pre">DocstringParser.raises()</span></code></a></li>
2968
+ <li><a class="reference internal" href="#simstack.util.docstring_parser.DocstringParser.returns"><code class="docutils literal notranslate"><span class="pre">DocstringParser.returns()</span></code></a></li>
2969
+ <li><a class="reference internal" href="#simstack.util.docstring_parser.DocstringParser.simstack_results"><code class="docutils literal notranslate"><span class="pre">DocstringParser.simstack_results()</span></code></a></li>
2970
+ </ul>
2971
+ </li>
2972
+ <li><a class="reference internal" href="#simstack.util.docstring_parser.parse_docstring"><code class="docutils literal notranslate"><span class="pre">parse_docstring()</span></code></a></li>
2973
+ </ul>
2974
+ </li>
2975
+ <li><a class="reference internal" href="#module-simstack.util.file_hashing">simstack.util.file_hashing module</a><ul>
2976
+ <li><a class="reference internal" href="#simstack.util.file_hashing.hash_file"><code class="docutils literal notranslate"><span class="pre">hash_file()</span></code></a></li>
2977
+ <li><a class="reference internal" href="#simstack.util.file_hashing.hash_file_object"><code class="docutils literal notranslate"><span class="pre">hash_file_object()</span></code></a></li>
2978
+ <li><a class="reference internal" href="#simstack.util.file_hashing.hash_string"><code class="docutils literal notranslate"><span class="pre">hash_string()</span></code></a></li>
2979
+ </ul>
2980
+ </li>
2981
+ <li><a class="reference internal" href="#module-simstack.util.file_transfer_client">simstack.util.file_transfer_client module</a><ul>
2982
+ <li><a class="reference internal" href="#simstack.util.file_transfer_client.DownloadResult"><code class="docutils literal notranslate"><span class="pre">DownloadResult</span></code></a><ul>
2983
+ <li><a class="reference internal" href="#simstack.util.file_transfer_client.DownloadResult.checksum_sha256"><code class="docutils literal notranslate"><span class="pre">DownloadResult.checksum_sha256</span></code></a></li>
2984
+ <li><a class="reference internal" href="#simstack.util.file_transfer_client.DownloadResult.path"><code class="docutils literal notranslate"><span class="pre">DownloadResult.path</span></code></a></li>
2985
+ <li><a class="reference internal" href="#simstack.util.file_transfer_client.DownloadResult.size_bytes"><code class="docutils literal notranslate"><span class="pre">DownloadResult.size_bytes</span></code></a></li>
2986
+ </ul>
2987
+ </li>
2988
+ <li><a class="reference internal" href="#simstack.util.file_transfer_client.FileTransferClient"><code class="docutils literal notranslate"><span class="pre">FileTransferClient</span></code></a><ul>
2989
+ <li><a class="reference internal" href="#simstack.util.file_transfer_client.FileTransferClient.chunk_size"><code class="docutils literal notranslate"><span class="pre">FileTransferClient.chunk_size</span></code></a></li>
2990
+ <li><a class="reference internal" href="#simstack.util.file_transfer_client.FileTransferClient.complete_transfer"><code class="docutils literal notranslate"><span class="pre">FileTransferClient.complete_transfer()</span></code></a></li>
2991
+ <li><a class="reference internal" href="#simstack.util.file_transfer_client.FileTransferClient.create_transfer"><code class="docutils literal notranslate"><span class="pre">FileTransferClient.create_transfer()</span></code></a></li>
2992
+ <li><a class="reference internal" href="#simstack.util.file_transfer_client.FileTransferClient.download_file"><code class="docutils literal notranslate"><span class="pre">FileTransferClient.download_file()</span></code></a></li>
2993
+ <li><a class="reference internal" href="#simstack.util.file_transfer_client.FileTransferClient.fail_transfer"><code class="docutils literal notranslate"><span class="pre">FileTransferClient.fail_transfer()</span></code></a></li>
2994
+ <li><a class="reference internal" href="#simstack.util.file_transfer_client.FileTransferClient.from_context"><code class="docutils literal notranslate"><span class="pre">FileTransferClient.from_context()</span></code></a></li>
2995
+ <li><a class="reference internal" href="#simstack.util.file_transfer_client.FileTransferClient.get_transfer"><code class="docutils literal notranslate"><span class="pre">FileTransferClient.get_transfer()</span></code></a></li>
2996
+ <li><a class="reference internal" href="#simstack.util.file_transfer_client.FileTransferClient.list_transfers"><code class="docutils literal notranslate"><span class="pre">FileTransferClient.list_transfers()</span></code></a></li>
2997
+ <li><a class="reference internal" href="#simstack.util.file_transfer_client.FileTransferClient.upload_file"><code class="docutils literal notranslate"><span class="pre">FileTransferClient.upload_file()</span></code></a></li>
2998
+ <li><a class="reference internal" href="#simstack.util.file_transfer_client.FileTransferClient.wait_until_uploaded"><code class="docutils literal notranslate"><span class="pre">FileTransferClient.wait_until_uploaded()</span></code></a></li>
2999
+ </ul>
3000
+ </li>
3001
+ <li><a class="reference internal" href="#simstack.util.file_transfer_client.FileTransferError"><code class="docutils literal notranslate"><span class="pre">FileTransferError</span></code></a></li>
3002
+ <li><a class="reference internal" href="#simstack.util.file_transfer_client.first_available_remote_location"><code class="docutils literal notranslate"><span class="pre">first_available_remote_location()</span></code></a></li>
3003
+ <li><a class="reference internal" href="#simstack.util.file_transfer_client.path_for_file_instance"><code class="docutils literal notranslate"><span class="pre">path_for_file_instance()</span></code></a></li>
3004
+ <li><a class="reference internal" href="#simstack.util.file_transfer_client.resolve_instance_path"><code class="docutils literal notranslate"><span class="pre">resolve_instance_path()</span></code></a></li>
3005
+ <li><a class="reference internal" href="#simstack.util.file_transfer_client.resource_name"><code class="docutils literal notranslate"><span class="pre">resource_name()</span></code></a></li>
3006
+ <li><a class="reference internal" href="#simstack.util.file_transfer_client.transfer_resource_name"><code class="docutils literal notranslate"><span class="pre">transfer_resource_name()</span></code></a></li>
3007
+ </ul>
3008
+ </li>
3009
+ <li><a class="reference internal" href="#module-simstack.util.files">simstack.util.files module</a><ul>
3010
+ <li><a class="reference internal" href="#simstack.util.files.FfspecFile"><code class="docutils literal notranslate"><span class="pre">FfspecFile</span></code></a><ul>
3011
+ <li><a class="reference internal" href="#simstack.util.files.FfspecFile.access_count"><code class="docutils literal notranslate"><span class="pre">FfspecFile.access_count</span></code></a></li>
3012
+ <li><a class="reference internal" href="#simstack.util.files.FfspecFile.can_connect"><code class="docutils literal notranslate"><span class="pre">FfspecFile.can_connect()</span></code></a></li>
3013
+ <li><a class="reference internal" href="#simstack.util.files.FfspecFile.checksum"><code class="docutils literal notranslate"><span class="pre">FfspecFile.checksum</span></code></a></li>
3014
+ <li><a class="reference internal" href="#simstack.util.files.FfspecFile.children"><code class="docutils literal notranslate"><span class="pre">FfspecFile.children</span></code></a></li>
3015
+ <li><a class="reference internal" href="#simstack.util.files.FfspecFile.content_type"><code class="docutils literal notranslate"><span class="pre">FfspecFile.content_type</span></code></a></li>
3016
+ <li><a class="reference internal" href="#simstack.util.files.FfspecFile.copy_from_local"><code class="docutils literal notranslate"><span class="pre">FfspecFile.copy_from_local()</span></code></a></li>
3017
+ <li><a class="reference internal" href="#simstack.util.files.FfspecFile.copy_to_local"><code class="docutils literal notranslate"><span class="pre">FfspecFile.copy_to_local()</span></code></a></li>
3018
+ <li><a class="reference internal" href="#simstack.util.files.FfspecFile.created_at"><code class="docutils literal notranslate"><span class="pre">FfspecFile.created_at</span></code></a></li>
3019
+ <li><a class="reference internal" href="#simstack.util.files.FfspecFile.extension"><code class="docutils literal notranslate"><span class="pre">FfspecFile.extension</span></code></a></li>
3020
+ <li><a class="reference internal" href="#simstack.util.files.FfspecFile.from_ssh_key"><code class="docutils literal notranslate"><span class="pre">FfspecFile.from_ssh_key()</span></code></a></li>
3021
+ <li><a class="reference internal" href="#simstack.util.files.FfspecFile.get_filesystem"><code class="docutils literal notranslate"><span class="pre">FfspecFile.get_filesystem()</span></code></a></li>
3022
+ <li><a class="reference internal" href="#simstack.util.files.FfspecFile.host"><code class="docutils literal notranslate"><span class="pre">FfspecFile.host</span></code></a></li>
3023
+ <li><a class="reference internal" href="#simstack.util.files.FfspecFile.is_directory"><code class="docutils literal notranslate"><span class="pre">FfspecFile.is_directory</span></code></a></li>
3024
+ <li><a class="reference internal" href="#simstack.util.files.FfspecFile.last_accessed"><code class="docutils literal notranslate"><span class="pre">FfspecFile.last_accessed</span></code></a></li>
3025
+ <li><a class="reference internal" href="#simstack.util.files.FfspecFile.metadata"><code class="docutils literal notranslate"><span class="pre">FfspecFile.metadata</span></code></a></li>
3026
+ <li><a class="reference internal" href="#simstack.util.files.FfspecFile.model_config"><code class="docutils literal notranslate"><span class="pre">FfspecFile.model_config</span></code></a></li>
3027
+ <li><a class="reference internal" href="#simstack.util.files.FfspecFile.modified_at"><code class="docutils literal notranslate"><span class="pre">FfspecFile.modified_at</span></code></a></li>
3028
+ <li><a class="reference internal" href="#simstack.util.files.FfspecFile.name"><code class="docutils literal notranslate"><span class="pre">FfspecFile.name</span></code></a></li>
3029
+ <li><a class="reference internal" href="#simstack.util.files.FfspecFile.parent_path"><code class="docutils literal notranslate"><span class="pre">FfspecFile.parent_path</span></code></a></li>
3030
+ <li><a class="reference internal" href="#simstack.util.files.FfspecFile.path"><code class="docutils literal notranslate"><span class="pre">FfspecFile.path</span></code></a></li>
3031
+ <li><a class="reference internal" href="#simstack.util.files.FfspecFile.port"><code class="docutils literal notranslate"><span class="pre">FfspecFile.port</span></code></a></li>
3032
+ <li><a class="reference internal" href="#simstack.util.files.FfspecFile.protocol"><code class="docutils literal notranslate"><span class="pre">FfspecFile.protocol</span></code></a></li>
3033
+ <li><a class="reference internal" href="#simstack.util.files.FfspecFile.size"><code class="docutils literal notranslate"><span class="pre">FfspecFile.size</span></code></a></li>
3034
+ <li><a class="reference internal" href="#simstack.util.files.FfspecFile.ssh_auth"><code class="docutils literal notranslate"><span class="pre">FfspecFile.ssh_auth</span></code></a></li>
3035
+ <li><a class="reference internal" href="#simstack.util.files.FfspecFile.storage_options"><code class="docutils literal notranslate"><span class="pre">FfspecFile.storage_options</span></code></a></li>
3036
+ <li><a class="reference internal" href="#simstack.util.files.FfspecFile.to_uri"><code class="docutils literal notranslate"><span class="pre">FfspecFile.to_uri()</span></code></a></li>
3037
+ <li><a class="reference internal" href="#simstack.util.files.FfspecFile.username"><code class="docutils literal notranslate"><span class="pre">FfspecFile.username</span></code></a></li>
3038
+ </ul>
3039
+ </li>
3040
+ <li><a class="reference internal" href="#simstack.util.files.SshAuthMethod"><code class="docutils literal notranslate"><span class="pre">SshAuthMethod</span></code></a><ul>
3041
+ <li><a class="reference internal" href="#simstack.util.files.SshAuthMethod.allow_host_key_add"><code class="docutils literal notranslate"><span class="pre">SshAuthMethod.allow_host_key_add</span></code></a></li>
3042
+ <li><a class="reference internal" href="#simstack.util.files.SshAuthMethod.auth_type"><code class="docutils literal notranslate"><span class="pre">SshAuthMethod.auth_type</span></code></a></li>
3043
+ <li><a class="reference internal" href="#simstack.util.files.SshAuthMethod.host_key_policy"><code class="docutils literal notranslate"><span class="pre">SshAuthMethod.host_key_policy</span></code></a></li>
3044
+ <li><a class="reference internal" href="#simstack.util.files.SshAuthMethod.key_filename"><code class="docutils literal notranslate"><span class="pre">SshAuthMethod.key_filename</span></code></a></li>
3045
+ <li><a class="reference internal" href="#simstack.util.files.SshAuthMethod.key_passphrase"><code class="docutils literal notranslate"><span class="pre">SshAuthMethod.key_passphrase</span></code></a></li>
3046
+ <li><a class="reference internal" href="#simstack.util.files.SshAuthMethod.known_hosts_file"><code class="docutils literal notranslate"><span class="pre">SshAuthMethod.known_hosts_file</span></code></a></li>
3047
+ <li><a class="reference internal" href="#simstack.util.files.SshAuthMethod.model_config"><code class="docutils literal notranslate"><span class="pre">SshAuthMethod.model_config</span></code></a></li>
3048
+ <li><a class="reference internal" href="#simstack.util.files.SshAuthMethod.password"><code class="docutils literal notranslate"><span class="pre">SshAuthMethod.password</span></code></a></li>
3049
+ </ul>
3050
+ </li>
3051
+ </ul>
3052
+ </li>
3053
+ <li><a class="reference internal" href="#module-simstack.util.find_python_files">simstack.util.find_python_files module</a><ul>
3054
+ <li><a class="reference internal" href="#simstack.util.find_python_files.find_python_files"><code class="docutils literal notranslate"><span class="pre">find_python_files()</span></code></a></li>
3055
+ </ul>
3056
+ </li>
3057
+ <li><a class="reference internal" href="#module-simstack.util.generate_ui_schema">simstack.util.generate_ui_schema module</a><ul>
3058
+ <li><a class="reference internal" href="#simstack.util.generate_ui_schema.generate_ui_schema"><code class="docutils literal notranslate"><span class="pre">generate_ui_schema()</span></code></a></li>
3059
+ </ul>
3060
+ </li>
3061
+ <li><a class="reference internal" href="#module-simstack.util.generic_list_mixin">simstack.util.generic_list_mixin module</a><ul>
3062
+ <li><a class="reference internal" href="#simstack.util.generic_list_mixin.GenericListMixin"><code class="docutils literal notranslate"><span class="pre">GenericListMixin</span></code></a><ul>
3063
+ <li><a class="reference internal" href="#simstack.util.generic_list_mixin.GenericListMixin.append"><code class="docutils literal notranslate"><span class="pre">GenericListMixin.append()</span></code></a></li>
3064
+ <li><a class="reference internal" href="#simstack.util.generic_list_mixin.GenericListMixin.clear"><code class="docutils literal notranslate"><span class="pre">GenericListMixin.clear()</span></code></a></li>
3065
+ <li><a class="reference internal" href="#simstack.util.generic_list_mixin.GenericListMixin.copy"><code class="docutils literal notranslate"><span class="pre">GenericListMixin.copy()</span></code></a></li>
3066
+ <li><a class="reference internal" href="#simstack.util.generic_list_mixin.GenericListMixin.count"><code class="docutils literal notranslate"><span class="pre">GenericListMixin.count()</span></code></a></li>
3067
+ <li><a class="reference internal" href="#simstack.util.generic_list_mixin.GenericListMixin.extend"><code class="docutils literal notranslate"><span class="pre">GenericListMixin.extend()</span></code></a></li>
3068
+ <li><a class="reference internal" href="#simstack.util.generic_list_mixin.GenericListMixin.filter_by_property"><code class="docutils literal notranslate"><span class="pre">GenericListMixin.filter_by_property()</span></code></a></li>
3069
+ <li><a class="reference internal" href="#simstack.util.generic_list_mixin.GenericListMixin.filter_by_size"><code class="docutils literal notranslate"><span class="pre">GenericListMixin.filter_by_size()</span></code></a></li>
3070
+ <li><a class="reference internal" href="#simstack.util.generic_list_mixin.GenericListMixin.find"><code class="docutils literal notranslate"><span class="pre">GenericListMixin.find()</span></code></a></li>
3071
+ <li><a class="reference internal" href="#simstack.util.generic_list_mixin.GenericListMixin.find_all"><code class="docutils literal notranslate"><span class="pre">GenericListMixin.find_all()</span></code></a></li>
3072
+ <li><a class="reference internal" href="#simstack.util.generic_list_mixin.GenericListMixin.index"><code class="docutils literal notranslate"><span class="pre">GenericListMixin.index()</span></code></a></li>
3073
+ <li><a class="reference internal" href="#simstack.util.generic_list_mixin.GenericListMixin.insert"><code class="docutils literal notranslate"><span class="pre">GenericListMixin.insert()</span></code></a></li>
3074
+ <li><a class="reference internal" href="#simstack.util.generic_list_mixin.GenericListMixin.pop"><code class="docutils literal notranslate"><span class="pre">GenericListMixin.pop()</span></code></a></li>
3075
+ <li><a class="reference internal" href="#simstack.util.generic_list_mixin.GenericListMixin.remove"><code class="docutils literal notranslate"><span class="pre">GenericListMixin.remove()</span></code></a></li>
3076
+ <li><a class="reference internal" href="#simstack.util.generic_list_mixin.GenericListMixin.reverse"><code class="docutils literal notranslate"><span class="pre">GenericListMixin.reverse()</span></code></a></li>
3077
+ <li><a class="reference internal" href="#simstack.util.generic_list_mixin.GenericListMixin.sort"><code class="docutils literal notranslate"><span class="pre">GenericListMixin.sort()</span></code></a></li>
3078
+ <li><a class="reference internal" href="#simstack.util.generic_list_mixin.GenericListMixin.sort_by_name"><code class="docutils literal notranslate"><span class="pre">GenericListMixin.sort_by_name()</span></code></a></li>
3079
+ <li><a class="reference internal" href="#simstack.util.generic_list_mixin.GenericListMixin.sort_by_size"><code class="docutils literal notranslate"><span class="pre">GenericListMixin.sort_by_size()</span></code></a></li>
3080
+ </ul>
3081
+ </li>
3082
+ </ul>
3083
+ </li>
3084
+ <li><a class="reference internal" href="#module-simstack.util.geometry_utils">simstack.util.geometry_utils module</a></li>
3085
+ <li><a class="reference internal" href="#module-simstack.util.get_module_path">simstack.util.get_module_path module</a><ul>
3086
+ <li><a class="reference internal" href="#simstack.util.get_module_path.get_module_path"><code class="docutils literal notranslate"><span class="pre">get_module_path()</span></code></a></li>
3087
+ </ul>
3088
+ </li>
3089
+ <li><a class="reference internal" href="#module-simstack.util.git_pull">simstack.util.git_pull module</a><ul>
3090
+ <li><a class="reference internal" href="#simstack.util.git_pull.git_pull_periodically"><code class="docutils literal notranslate"><span class="pre">git_pull_periodically()</span></code></a></li>
3091
+ </ul>
3092
+ </li>
3093
+ <li><a class="reference internal" href="#module-simstack.util.git_repository_status">simstack.util.git_repository_status module</a><ul>
3094
+ <li><a class="reference internal" href="#simstack.util.git_repository_status.get_git_status"><code class="docutils literal notranslate"><span class="pre">get_git_status()</span></code></a></li>
3095
+ </ul>
3096
+ </li>
3097
+ <li><a class="reference internal" href="#module-simstack.util.import_module">simstack.util.import_module module</a><ul>
3098
+ <li><a class="reference internal" href="#simstack.util.import_module.import_module_from_file"><code class="docutils literal notranslate"><span class="pre">import_module_from_file()</span></code></a></li>
3099
+ </ul>
3100
+ </li>
3101
+ <li><a class="reference internal" href="#module-simstack.util.importer">simstack.util.importer module</a><ul>
3102
+ <li><a class="reference internal" href="#simstack.util.importer.import_class"><code class="docutils literal notranslate"><span class="pre">import_class()</span></code></a></li>
3103
+ <li><a class="reference internal" href="#simstack.util.importer.import_class_by_name"><code class="docutils literal notranslate"><span class="pre">import_class_by_name()</span></code></a></li>
3104
+ <li><a class="reference internal" href="#simstack.util.importer.import_function"><code class="docutils literal notranslate"><span class="pre">import_function()</span></code></a></li>
3105
+ <li><a class="reference internal" href="#simstack.util.importer.import_function_by_name"><code class="docutils literal notranslate"><span class="pre">import_function_by_name()</span></code></a></li>
3106
+ </ul>
3107
+ </li>
3108
+ <li><a class="reference internal" href="#module-simstack.util.init_data_source">simstack.util.init_data_source module</a><ul>
3109
+ <li><a class="reference internal" href="#simstack.util.init_data_source.initialize_resource_from_db"><code class="docutils literal notranslate"><span class="pre">initialize_resource_from_db()</span></code></a></li>
3110
+ </ul>
3111
+ </li>
3112
+ <li><a class="reference internal" href="#module-simstack.util.make_graph">simstack.util.make_graph module</a><ul>
3113
+ <li><a class="reference internal" href="#simstack.util.make_graph.model_to_graph_data"><code class="docutils literal notranslate"><span class="pre">model_to_graph_data()</span></code></a></li>
3114
+ </ul>
3115
+ </li>
3116
+ <li><a class="reference internal" href="#module-simstack.util.make_table">simstack.util.make_table module</a><ul>
3117
+ <li><a class="reference internal" href="#simstack.util.make_table.create_column_def"><code class="docutils literal notranslate"><span class="pre">create_column_def()</span></code></a></li>
3118
+ <li><a class="reference internal" href="#simstack.util.make_table.is_pydantic_model"><code class="docutils literal notranslate"><span class="pre">is_pydantic_model()</span></code></a></li>
3119
+ <li><a class="reference internal" href="#simstack.util.make_table.make_column_defs_helper"><code class="docutils literal notranslate"><span class="pre">make_column_defs_helper()</span></code></a></li>
3120
+ <li><a class="reference internal" href="#simstack.util.make_table.make_column_defs_instance"><code class="docutils literal notranslate"><span class="pre">make_column_defs_instance()</span></code></a></li>
3121
+ <li><a class="reference internal" href="#simstack.util.make_table.make_table_entries"><code class="docutils literal notranslate"><span class="pre">make_table_entries()</span></code></a></li>
3122
+ <li><a class="reference internal" href="#simstack.util.make_table.make_table_entries_helper"><code class="docutils literal notranslate"><span class="pre">make_table_entries_helper()</span></code></a></li>
3123
+ <li><a class="reference internal" href="#simstack.util.make_table.ui_add_table"><code class="docutils literal notranslate"><span class="pre">ui_add_table()</span></code></a></li>
3124
+ </ul>
3125
+ </li>
3126
+ <li><a class="reference internal" href="#module-simstack.util.mappings">simstack.util.mappings module</a><ul>
3127
+ <li><a class="reference internal" href="#simstack.util.mappings.ModelMappingTable"><code class="docutils literal notranslate"><span class="pre">ModelMappingTable</span></code></a><ul>
3128
+ <li><a class="reference internal" href="#simstack.util.mappings.ModelMappingTable.get_by_mapping"><code class="docutils literal notranslate"><span class="pre">ModelMappingTable.get_by_mapping()</span></code></a></li>
3129
+ <li><a class="reference internal" href="#simstack.util.mappings.ModelMappingTable.get_by_name"><code class="docutils literal notranslate"><span class="pre">ModelMappingTable.get_by_name()</span></code></a></li>
3130
+ <li><a class="reference internal" href="#simstack.util.mappings.ModelMappingTable.load"><code class="docutils literal notranslate"><span class="pre">ModelMappingTable.load()</span></code></a></li>
3131
+ </ul>
3132
+ </li>
3133
+ <li><a class="reference internal" href="#simstack.util.mappings.NodeMappingTable"><code class="docutils literal notranslate"><span class="pre">NodeMappingTable</span></code></a><ul>
3134
+ <li><a class="reference internal" href="#simstack.util.mappings.NodeMappingTable.get_by_mapping"><code class="docutils literal notranslate"><span class="pre">NodeMappingTable.get_by_mapping()</span></code></a></li>
3135
+ <li><a class="reference internal" href="#simstack.util.mappings.NodeMappingTable.get_by_name"><code class="docutils literal notranslate"><span class="pre">NodeMappingTable.get_by_name()</span></code></a></li>
3136
+ <li><a class="reference internal" href="#simstack.util.mappings.NodeMappingTable.load"><code class="docutils literal notranslate"><span class="pre">NodeMappingTable.load()</span></code></a></li>
3137
+ </ul>
3138
+ </li>
3139
+ </ul>
3140
+ </li>
3141
+ <li><a class="reference internal" href="#module-simstack.util.minimal_route_finder">simstack.util.minimal_route_finder module</a><ul>
3142
+ <li><a class="reference internal" href="#simstack.util.minimal_route_finder.find_minimal_route"><code class="docutils literal notranslate"><span class="pre">find_minimal_route()</span></code></a></li>
3143
+ <li><a class="reference internal" href="#simstack.util.minimal_route_finder.find_shortest_route"><code class="docutils literal notranslate"><span class="pre">find_shortest_route()</span></code></a></li>
3144
+ </ul>
3145
+ </li>
3146
+ <li><a class="reference internal" href="#module-simstack.util.mock_db">simstack.util.mock_db module</a><ul>
3147
+ <li><a class="reference internal" href="#simstack.util.mock_db.InMemoryAIOEngine"><code class="docutils literal notranslate"><span class="pre">InMemoryAIOEngine</span></code></a><ul>
3148
+ <li><a class="reference internal" href="#simstack.util.mock_db.InMemoryAIOEngine.find"><code class="docutils literal notranslate"><span class="pre">InMemoryAIOEngine.find()</span></code></a></li>
3149
+ <li><a class="reference internal" href="#simstack.util.mock_db.InMemoryAIOEngine.save"><code class="docutils literal notranslate"><span class="pre">InMemoryAIOEngine.save()</span></code></a></li>
3150
+ </ul>
3151
+ </li>
3152
+ <li><a class="reference internal" href="#simstack.util.mock_db.InMemoryCollection"><code class="docutils literal notranslate"><span class="pre">InMemoryCollection</span></code></a></li>
3153
+ <li><a class="reference internal" href="#simstack.util.mock_db.find_one"><code class="docutils literal notranslate"><span class="pre">find_one()</span></code></a></li>
3154
+ </ul>
3155
+ </li>
3156
+ <li><a class="reference internal" href="#module-simstack.util.module_path_checker">simstack.util.module_path_checker module</a><ul>
3157
+ <li><a class="reference internal" href="#simstack.util.module_path_checker.is_module_subpath_of_path"><code class="docutils literal notranslate"><span class="pre">is_module_subpath_of_path()</span></code></a></li>
3158
+ </ul>
3159
+ </li>
3160
+ <li><a class="reference internal" href="#module-simstack.util.object_list_mixin">simstack.util.object_list_mixin module</a><ul>
3161
+ <li><a class="reference internal" href="#simstack.util.object_list_mixin.ObjectListMixin"><code class="docutils literal notranslate"><span class="pre">ObjectListMixin</span></code></a><ul>
3162
+ <li><a class="reference internal" href="#simstack.util.object_list_mixin.ObjectListMixin.append"><code class="docutils literal notranslate"><span class="pre">ObjectListMixin.append()</span></code></a></li>
3163
+ <li><a class="reference internal" href="#simstack.util.object_list_mixin.ObjectListMixin.clear"><code class="docutils literal notranslate"><span class="pre">ObjectListMixin.clear()</span></code></a></li>
3164
+ <li><a class="reference internal" href="#simstack.util.object_list_mixin.ObjectListMixin.copy"><code class="docutils literal notranslate"><span class="pre">ObjectListMixin.copy()</span></code></a></li>
3165
+ <li><a class="reference internal" href="#simstack.util.object_list_mixin.ObjectListMixin.count"><code class="docutils literal notranslate"><span class="pre">ObjectListMixin.count()</span></code></a></li>
3166
+ <li><a class="reference internal" href="#simstack.util.object_list_mixin.ObjectListMixin.db_find_postprocess"><code class="docutils literal notranslate"><span class="pre">ObjectListMixin.db_find_postprocess()</span></code></a></li>
3167
+ <li><a class="reference internal" href="#simstack.util.object_list_mixin.ObjectListMixin.delete_element"><code class="docutils literal notranslate"><span class="pre">ObjectListMixin.delete_element()</span></code></a></li>
3168
+ <li><a class="reference internal" href="#simstack.util.object_list_mixin.ObjectListMixin.extend"><code class="docutils literal notranslate"><span class="pre">ObjectListMixin.extend()</span></code></a></li>
3169
+ <li><a class="reference internal" href="#simstack.util.object_list_mixin.ObjectListMixin.find"><code class="docutils literal notranslate"><span class="pre">ObjectListMixin.find()</span></code></a></li>
3170
+ <li><a class="reference internal" href="#simstack.util.object_list_mixin.ObjectListMixin.find_all"><code class="docutils literal notranslate"><span class="pre">ObjectListMixin.find_all()</span></code></a></li>
3171
+ <li><a class="reference internal" href="#simstack.util.object_list_mixin.ObjectListMixin.get"><code class="docutils literal notranslate"><span class="pre">ObjectListMixin.get()</span></code></a></li>
3172
+ <li><a class="reference internal" href="#simstack.util.object_list_mixin.ObjectListMixin.index"><code class="docutils literal notranslate"><span class="pre">ObjectListMixin.index()</span></code></a></li>
3173
+ <li><a class="reference internal" href="#simstack.util.object_list_mixin.ObjectListMixin.insert"><code class="docutils literal notranslate"><span class="pre">ObjectListMixin.insert()</span></code></a></li>
3174
+ <li><a class="reference internal" href="#simstack.util.object_list_mixin.ObjectListMixin.pop"><code class="docutils literal notranslate"><span class="pre">ObjectListMixin.pop()</span></code></a></li>
3175
+ <li><a class="reference internal" href="#simstack.util.object_list_mixin.ObjectListMixin.remove"><code class="docutils literal notranslate"><span class="pre">ObjectListMixin.remove()</span></code></a></li>
3176
+ <li><a class="reference internal" href="#simstack.util.object_list_mixin.ObjectListMixin.reverse"><code class="docutils literal notranslate"><span class="pre">ObjectListMixin.reverse()</span></code></a></li>
3177
+ <li><a class="reference internal" href="#simstack.util.object_list_mixin.ObjectListMixin.save"><code class="docutils literal notranslate"><span class="pre">ObjectListMixin.save()</span></code></a></li>
3178
+ <li><a class="reference internal" href="#simstack.util.object_list_mixin.ObjectListMixin.sort"><code class="docutils literal notranslate"><span class="pre">ObjectListMixin.sort()</span></code></a></li>
3179
+ </ul>
3180
+ </li>
3181
+ </ul>
3182
+ </li>
3183
+ <li><a class="reference internal" href="#module-simstack.util.path_manager">simstack.util.path_manager module</a><ul>
3184
+ <li><a class="reference internal" href="#simstack.util.path_manager.PathManager"><code class="docutils literal notranslate"><span class="pre">PathManager</span></code></a><ul>
3185
+ <li><a class="reference internal" href="#simstack.util.path_manager.PathManager.add_path"><code class="docutils literal notranslate"><span class="pre">PathManager.add_path()</span></code></a></li>
3186
+ <li><a class="reference internal" href="#simstack.util.path_manager.PathManager.default_excludes"><code class="docutils literal notranslate"><span class="pre">PathManager.default_excludes()</span></code></a></li>
3187
+ <li><a class="reference internal" href="#simstack.util.path_manager.PathManager.find_parent_path"><code class="docutils literal notranslate"><span class="pre">PathManager.find_parent_path()</span></code></a></li>
3188
+ <li><a class="reference internal" href="#simstack.util.path_manager.PathManager.find_python_files"><code class="docutils literal notranslate"><span class="pre">PathManager.find_python_files()</span></code></a></li>
3189
+ <li><a class="reference internal" href="#simstack.util.path_manager.PathManager.from_config"><code class="docutils literal notranslate"><span class="pre">PathManager.from_config()</span></code></a></li>
3190
+ <li><a class="reference internal" href="#simstack.util.path_manager.PathManager.get_drops"><code class="docutils literal notranslate"><span class="pre">PathManager.get_drops()</span></code></a></li>
3191
+ <li><a class="reference internal" href="#simstack.util.path_manager.PathManager.get_path"><code class="docutils literal notranslate"><span class="pre">PathManager.get_path()</span></code></a></li>
3192
+ <li><a class="reference internal" href="#simstack.util.path_manager.PathManager.iterate_python_files"><code class="docutils literal notranslate"><span class="pre">PathManager.iterate_python_files()</span></code></a></li>
3193
+ <li><a class="reference internal" href="#simstack.util.path_manager.PathManager.reset"><code class="docutils literal notranslate"><span class="pre">PathManager.reset()</span></code></a></li>
3194
+ </ul>
3195
+ </li>
3196
+ </ul>
3197
+ </li>
3198
+ <li><a class="reference internal" href="#module-simstack.util.project_root_finder">simstack.util.project_root_finder module</a><ul>
3199
+ <li><a class="reference internal" href="#simstack.util.project_root_finder.find_project_root"><code class="docutils literal notranslate"><span class="pre">find_project_root()</span></code></a></li>
3200
+ </ul>
3201
+ </li>
3202
+ <li><a class="reference internal" href="#module-simstack.util.queue_watcher">simstack.util.queue_watcher module</a><ul>
3203
+ <li><a class="reference internal" href="#simstack.util.queue_watcher.main"><code class="docutils literal notranslate"><span class="pre">main()</span></code></a></li>
3204
+ <li><a class="reference internal" href="#simstack.util.queue_watcher.parse_spec"><code class="docutils literal notranslate"><span class="pre">parse_spec()</span></code></a></li>
3205
+ <li><a class="reference internal" href="#simstack.util.queue_watcher.process_job_from_claim"><code class="docutils literal notranslate"><span class="pre">process_job_from_claim()</span></code></a></li>
3206
+ <li><a class="reference internal" href="#simstack.util.queue_watcher.run_command"><code class="docutils literal notranslate"><span class="pre">run_command()</span></code></a></li>
3207
+ <li><a class="reference internal" href="#simstack.util.queue_watcher.try_claim"><code class="docutils literal notranslate"><span class="pre">try_claim()</span></code></a></li>
3208
+ <li><a class="reference internal" href="#simstack.util.queue_watcher.try_lock"><code class="docutils literal notranslate"><span class="pre">try_lock()</span></code></a></li>
3209
+ </ul>
3210
+ </li>
3211
+ <li><a class="reference internal" href="#module-simstack.util.resource_config">simstack.util.resource_config module</a><ul>
3212
+ <li><a class="reference internal" href="#simstack.util.resource_config.ResourceConfig"><code class="docutils literal notranslate"><span class="pre">ResourceConfig</span></code></a><ul>
3213
+ <li><a class="reference internal" href="#simstack.util.resource_config.ResourceConfig._config"><code class="docutils literal notranslate"><span class="pre">ResourceConfig._config</span></code></a></li>
3214
+ <li><a class="reference internal" href="#simstack.util.resource_config.ResourceConfig._resource"><code class="docutils literal notranslate"><span class="pre">ResourceConfig._resource</span></code></a></li>
3215
+ <li><a class="reference internal" href="#simstack.util.resource_config.ResourceConfig.get_postprocessing_params"><code class="docutils literal notranslate"><span class="pre">ResourceConfig.get_postprocessing_params()</span></code></a></li>
3216
+ <li><a class="reference internal" href="#simstack.util.resource_config.ResourceConfig.get_program"><code class="docutils literal notranslate"><span class="pre">ResourceConfig.get_program()</span></code></a></li>
3217
+ <li><a class="reference internal" href="#simstack.util.resource_config.ResourceConfig.get_setup_params"><code class="docutils literal notranslate"><span class="pre">ResourceConfig.get_setup_params()</span></code></a></li>
3218
+ <li><a class="reference internal" href="#simstack.util.resource_config.ResourceConfig.os"><code class="docutils literal notranslate"><span class="pre">ResourceConfig.os</span></code></a></li>
3219
+ <li><a class="reference internal" href="#simstack.util.resource_config.ResourceConfig.run"><code class="docutils literal notranslate"><span class="pre">ResourceConfig.run()</span></code></a></li>
3220
+ <li><a class="reference internal" href="#simstack.util.resource_config.ResourceConfig.setup"><code class="docutils literal notranslate"><span class="pre">ResourceConfig.setup()</span></code></a></li>
3221
+ <li><a class="reference internal" href="#simstack.util.resource_config.ResourceConfig.tmp_base_dir"><code class="docutils literal notranslate"><span class="pre">ResourceConfig.tmp_base_dir</span></code></a></li>
3222
+ <li><a class="reference internal" href="#simstack.util.resource_config.ResourceConfig.tmp_dir"><code class="docutils literal notranslate"><span class="pre">ResourceConfig.tmp_dir()</span></code></a></li>
3223
+ </ul>
3224
+ </li>
3225
+ </ul>
3226
+ </li>
3227
+ <li><a class="reference internal" href="#module-simstack.util.route_finder">simstack.util.route_finder module</a><ul>
3228
+ <li><a class="reference internal" href="#simstack.util.route_finder.find_route"><code class="docutils literal notranslate"><span class="pre">find_route()</span></code></a></li>
3229
+ </ul>
3230
+ </li>
3231
+ <li><a class="reference internal" href="#module-simstack.util.runner_util">simstack.util.runner_util module</a><ul>
3232
+ <li><a class="reference internal" href="#simstack.util.runner_util.ensure_crontab_entry"><code class="docutils literal notranslate"><span class="pre">ensure_crontab_entry()</span></code></a></li>
3233
+ <li><a class="reference internal" href="#simstack.util.runner_util.graceful_shutdown"><code class="docutils literal notranslate"><span class="pre">graceful_shutdown()</span></code></a></li>
3234
+ <li><a class="reference internal" href="#simstack.util.runner_util.restart"><code class="docutils literal notranslate"><span class="pre">restart()</span></code></a></li>
3235
+ <li><a class="reference internal" href="#simstack.util.runner_util.schedule_restart"><code class="docutils literal notranslate"><span class="pre">schedule_restart()</span></code></a></li>
3236
+ </ul>
3237
+ </li>
3238
+ <li><a class="reference internal" href="#module-simstack.util.runner_utils">simstack.util.runner_utils module</a><ul>
3239
+ <li><a class="reference internal" href="#simstack.util.runner_utils.clean_slurm_info"><code class="docutils literal notranslate"><span class="pre">clean_slurm_info()</span></code></a></li>
3240
+ <li><a class="reference internal" href="#simstack.util.runner_utils.get_job_info"><code class="docutils literal notranslate"><span class="pre">get_job_info()</span></code></a></li>
3241
+ <li><a class="reference internal" href="#simstack.util.runner_utils.make_git_status_list"><code class="docutils literal notranslate"><span class="pre">make_git_status_list()</span></code></a></li>
3242
+ <li><a class="reference internal" href="#simstack.util.runner_utils.run_squeue_for_job"><code class="docutils literal notranslate"><span class="pre">run_squeue_for_job()</span></code></a></li>
3243
+ </ul>
3244
+ </li>
3245
+ <li><a class="reference internal" href="#module-simstack.util.safe_code_executor">simstack.util.safe_code_executor module</a><ul>
3246
+ <li><a class="reference internal" href="#simstack.util.safe_code_executor.safe_code_executor"><code class="docutils literal notranslate"><span class="pre">safe_code_executor()</span></code></a></li>
3247
+ </ul>
3248
+ </li>
3249
+ <li><a class="reference internal" href="#module-simstack.util.sample_config">simstack.util.sample_config module</a><ul>
3250
+ <li><a class="reference internal" href="#simstack.util.sample_config.sample_config_writer_entrypoint"><code class="docutils literal notranslate"><span class="pre">sample_config_writer_entrypoint()</span></code></a></li>
3251
+ </ul>
3252
+ </li>
3253
+ <li><a class="reference internal" href="#module-simstack.util.sensitive_content_filter">simstack.util.sensitive_content_filter module</a><ul>
3254
+ <li><a class="reference internal" href="#simstack.util.sensitive_content_filter.filter_file_content"><code class="docutils literal notranslate"><span class="pre">filter_file_content()</span></code></a></li>
3255
+ </ul>
3256
+ </li>
3257
+ <li><a class="reference internal" href="#module-simstack.util.setup_logging">simstack.util.setup_logging module</a><ul>
3258
+ <li><a class="reference internal" href="#simstack.util.setup_logging.setup_logging"><code class="docutils literal notranslate"><span class="pre">setup_logging()</span></code></a></li>
3259
+ </ul>
3260
+ </li>
3261
+ <li><a class="reference internal" href="#module-simstack.util.submit_to_watchdog">simstack.util.submit_to_watchdog module</a><ul>
3262
+ <li><a class="reference internal" href="#simstack.util.submit_to_watchdog.WatchdogResult"><code class="docutils literal notranslate"><span class="pre">WatchdogResult</span></code></a><ul>
3263
+ <li><a class="reference internal" href="#simstack.util.submit_to_watchdog.WatchdogResult.job_id"><code class="docutils literal notranslate"><span class="pre">WatchdogResult.job_id</span></code></a></li>
3264
+ <li><a class="reference internal" href="#simstack.util.submit_to_watchdog.WatchdogResult.model_config"><code class="docutils literal notranslate"><span class="pre">WatchdogResult.model_config</span></code></a></li>
3265
+ <li><a class="reference internal" href="#simstack.util.submit_to_watchdog.WatchdogResult.paths"><code class="docutils literal notranslate"><span class="pre">WatchdogResult.paths</span></code></a></li>
3266
+ <li><a class="reference internal" href="#simstack.util.submit_to_watchdog.WatchdogResult.returncode"><code class="docutils literal notranslate"><span class="pre">WatchdogResult.returncode</span></code></a></li>
3267
+ <li><a class="reference internal" href="#simstack.util.submit_to_watchdog.WatchdogResult.status"><code class="docutils literal notranslate"><span class="pre">WatchdogResult.status</span></code></a></li>
3268
+ <li><a class="reference internal" href="#simstack.util.submit_to_watchdog.WatchdogResult.stderr"><code class="docutils literal notranslate"><span class="pre">WatchdogResult.stderr</span></code></a></li>
3269
+ <li><a class="reference internal" href="#simstack.util.submit_to_watchdog.WatchdogResult.stdout"><code class="docutils literal notranslate"><span class="pre">WatchdogResult.stdout</span></code></a></li>
3270
+ </ul>
3271
+ </li>
3272
+ <li><a class="reference internal" href="#simstack.util.submit_to_watchdog.submit_to_watchdog"><code class="docutils literal notranslate"><span class="pre">submit_to_watchdog()</span></code></a></li>
3273
+ </ul>
3274
+ </li>
3275
+ <li><a class="reference internal" href="#module-simstack.util.toml_reader">simstack.util.toml_reader module</a><ul>
3276
+ <li><a class="reference internal" href="#simstack.util.toml_reader.TomlReader"><code class="docutils literal notranslate"><span class="pre">TomlReader</span></code></a><ul>
3277
+ <li><a class="reference internal" href="#simstack.util.toml_reader.TomlReader.build_routes"><code class="docutils literal notranslate"><span class="pre">TomlReader.build_routes()</span></code></a></li>
3278
+ <li><a class="reference internal" href="#simstack.util.toml_reader.TomlReader.config"><code class="docutils literal notranslate"><span class="pre">TomlReader.config</span></code></a></li>
3279
+ <li><a class="reference internal" href="#simstack.util.toml_reader.TomlReader.get"><code class="docutils literal notranslate"><span class="pre">TomlReader.get()</span></code></a></li>
3280
+ <li><a class="reference internal" href="#simstack.util.toml_reader.TomlReader.get_allowed_resources"><code class="docutils literal notranslate"><span class="pre">TomlReader.get_allowed_resources()</span></code></a></li>
3281
+ <li><a class="reference internal" href="#simstack.util.toml_reader.TomlReader.get_git_list"><code class="docutils literal notranslate"><span class="pre">TomlReader.get_git_list()</span></code></a></li>
3282
+ <li><a class="reference internal" href="#simstack.util.toml_reader.TomlReader.get_resource_definition"><code class="docutils literal notranslate"><span class="pre">TomlReader.get_resource_definition()</span></code></a></li>
3283
+ <li><a class="reference internal" href="#simstack.util.toml_reader.TomlReader.get_routes"><code class="docutils literal notranslate"><span class="pre">TomlReader.get_routes()</span></code></a></li>
3284
+ <li><a class="reference internal" href="#simstack.util.toml_reader.TomlReader.initialize_path_manager"><code class="docutils literal notranslate"><span class="pre">TomlReader.initialize_path_manager()</span></code></a></li>
3285
+ <li><a class="reference internal" href="#simstack.util.toml_reader.TomlReader.use_db"><code class="docutils literal notranslate"><span class="pre">TomlReader.use_db()</span></code></a></li>
3286
+ </ul>
3287
+ </li>
3288
+ </ul>
3289
+ </li>
3290
+ <li><a class="reference internal" href="#module-simstack.util.transform_file_name">simstack.util.transform_file_name module</a><ul>
3291
+ <li><a class="reference internal" href="#simstack.util.transform_file_name.transform_file_name"><code class="docutils literal notranslate"><span class="pre">transform_file_name()</span></code></a></li>
3292
+ </ul>
3293
+ </li>
3294
+ <li><a class="reference internal" href="#module-simstack.util.ui_tools">simstack.util.ui_tools module</a><ul>
3295
+ <li><a class="reference internal" href="#simstack.util.ui_tools.ui_hide_fields"><code class="docutils literal notranslate"><span class="pre">ui_hide_fields()</span></code></a></li>
3296
+ <li><a class="reference internal" href="#simstack.util.ui_tools.ui_line_vector"><code class="docutils literal notranslate"><span class="pre">ui_line_vector()</span></code></a></li>
3297
+ <li><a class="reference internal" href="#simstack.util.ui_tools.ui_make_foldable"><code class="docutils literal notranslate"><span class="pre">ui_make_foldable()</span></code></a></li>
3298
+ <li><a class="reference internal" href="#simstack.util.ui_tools.ui_make_properties_optional"><code class="docutils literal notranslate"><span class="pre">ui_make_properties_optional()</span></code></a></li>
3299
+ <li><a class="reference internal" href="#simstack.util.ui_tools.ui_make_title"><code class="docutils literal notranslate"><span class="pre">ui_make_title()</span></code></a></li>
3300
+ </ul>
3301
+ </li>
3302
+ <li><a class="reference internal" href="#module-simstack.util">Module contents</a></li>
3303
+ </ul>
3304
+ </li>
3305
+ </ul>
3306
+
3307
+ </div>
3308
+ </div>
3309
+ </div>
3310
+
3311
+
3312
+ </aside>
3313
+ </div>
3314
+ </div><script src="../../_static/documentation_options.js?v=5929fcd5"></script>
3315
+ <script src="../../_static/doctools.js?v=fd6eb6e6"></script>
3316
+ <script src="../../_static/sphinx_highlight.js?v=6ffebe34"></script>
3317
+ <script src="../../_static/scripts/furo.js?v=46bd48cc"></script>
3318
+ <script data-docs-built-at="2026-07-17 10:50:10 UTC" src="../../_static/docs-build-badge.js?v=57cb9fc6"></script>
3319
+ </body>
3320
+ </html>