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,476 @@
1
+ // @ts-check
2
+
3
+ /**@constructor*/
4
+ BaseStemmer = function() {
5
+ /** @protected */
6
+ this.current = '';
7
+ this.cursor = 0;
8
+ this.limit = 0;
9
+ this.limit_backward = 0;
10
+ this.bra = 0;
11
+ this.ket = 0;
12
+
13
+ /**
14
+ * @param {string} value
15
+ */
16
+ this.setCurrent = function(value) {
17
+ this.current = value;
18
+ this.cursor = 0;
19
+ this.limit = this.current.length;
20
+ this.limit_backward = 0;
21
+ this.bra = this.cursor;
22
+ this.ket = this.limit;
23
+ };
24
+
25
+ /**
26
+ * @return {string}
27
+ */
28
+ this.getCurrent = function() {
29
+ return this.current;
30
+ };
31
+
32
+ /**
33
+ * @param {BaseStemmer} other
34
+ */
35
+ this.copy_from = function(other) {
36
+ /** @protected */
37
+ this.current = other.current;
38
+ this.cursor = other.cursor;
39
+ this.limit = other.limit;
40
+ this.limit_backward = other.limit_backward;
41
+ this.bra = other.bra;
42
+ this.ket = other.ket;
43
+ };
44
+
45
+ /**
46
+ * @param {number[]} s
47
+ * @param {number} min
48
+ * @param {number} max
49
+ * @return {boolean}
50
+ */
51
+ this.in_grouping = function(s, min, max) {
52
+ /** @protected */
53
+ if (this.cursor >= this.limit) return false;
54
+ var ch = this.current.charCodeAt(this.cursor);
55
+ if (ch > max || ch < min) return false;
56
+ ch -= min;
57
+ if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return false;
58
+ this.cursor++;
59
+ return true;
60
+ };
61
+
62
+ /**
63
+ * @param {number[]} s
64
+ * @param {number} min
65
+ * @param {number} max
66
+ * @return {boolean}
67
+ */
68
+ this.go_in_grouping = function(s, min, max) {
69
+ /** @protected */
70
+ while (this.cursor < this.limit) {
71
+ var ch = this.current.charCodeAt(this.cursor);
72
+ if (ch > max || ch < min)
73
+ return true;
74
+ ch -= min;
75
+ if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0)
76
+ return true;
77
+ this.cursor++;
78
+ }
79
+ return false;
80
+ };
81
+
82
+ /**
83
+ * @param {number[]} s
84
+ * @param {number} min
85
+ * @param {number} max
86
+ * @return {boolean}
87
+ */
88
+ this.in_grouping_b = function(s, min, max) {
89
+ /** @protected */
90
+ if (this.cursor <= this.limit_backward) return false;
91
+ var ch = this.current.charCodeAt(this.cursor - 1);
92
+ if (ch > max || ch < min) return false;
93
+ ch -= min;
94
+ if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return false;
95
+ this.cursor--;
96
+ return true;
97
+ };
98
+
99
+ /**
100
+ * @param {number[]} s
101
+ * @param {number} min
102
+ * @param {number} max
103
+ * @return {boolean}
104
+ */
105
+ this.go_in_grouping_b = function(s, min, max) {
106
+ /** @protected */
107
+ while (this.cursor > this.limit_backward) {
108
+ var ch = this.current.charCodeAt(this.cursor - 1);
109
+ if (ch > max || ch < min) return true;
110
+ ch -= min;
111
+ if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return true;
112
+ this.cursor--;
113
+ }
114
+ return false;
115
+ };
116
+
117
+ /**
118
+ * @param {number[]} s
119
+ * @param {number} min
120
+ * @param {number} max
121
+ * @return {boolean}
122
+ */
123
+ this.out_grouping = function(s, min, max) {
124
+ /** @protected */
125
+ if (this.cursor >= this.limit) return false;
126
+ var ch = this.current.charCodeAt(this.cursor);
127
+ if (ch > max || ch < min) {
128
+ this.cursor++;
129
+ return true;
130
+ }
131
+ ch -= min;
132
+ if ((s[ch >>> 3] & (0X1 << (ch & 0x7))) == 0) {
133
+ this.cursor++;
134
+ return true;
135
+ }
136
+ return false;
137
+ };
138
+
139
+ /**
140
+ * @param {number[]} s
141
+ * @param {number} min
142
+ * @param {number} max
143
+ * @return {boolean}
144
+ */
145
+ this.go_out_grouping = function(s, min, max) {
146
+ /** @protected */
147
+ while (this.cursor < this.limit) {
148
+ var ch = this.current.charCodeAt(this.cursor);
149
+ if (ch <= max && ch >= min) {
150
+ ch -= min;
151
+ if ((s[ch >>> 3] & (0X1 << (ch & 0x7))) != 0) {
152
+ return true;
153
+ }
154
+ }
155
+ this.cursor++;
156
+ }
157
+ return false;
158
+ };
159
+
160
+ /**
161
+ * @param {number[]} s
162
+ * @param {number} min
163
+ * @param {number} max
164
+ * @return {boolean}
165
+ */
166
+ this.out_grouping_b = function(s, min, max) {
167
+ /** @protected */
168
+ if (this.cursor <= this.limit_backward) return false;
169
+ var ch = this.current.charCodeAt(this.cursor - 1);
170
+ if (ch > max || ch < min) {
171
+ this.cursor--;
172
+ return true;
173
+ }
174
+ ch -= min;
175
+ if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) {
176
+ this.cursor--;
177
+ return true;
178
+ }
179
+ return false;
180
+ };
181
+
182
+ /**
183
+ * @param {number[]} s
184
+ * @param {number} min
185
+ * @param {number} max
186
+ * @return {boolean}
187
+ */
188
+ this.go_out_grouping_b = function(s, min, max) {
189
+ /** @protected */
190
+ while (this.cursor > this.limit_backward) {
191
+ var ch = this.current.charCodeAt(this.cursor - 1);
192
+ if (ch <= max && ch >= min) {
193
+ ch -= min;
194
+ if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) != 0) {
195
+ return true;
196
+ }
197
+ }
198
+ this.cursor--;
199
+ }
200
+ return false;
201
+ };
202
+
203
+ /**
204
+ * @param {string} s
205
+ * @return {boolean}
206
+ */
207
+ this.eq_s = function(s)
208
+ {
209
+ /** @protected */
210
+ if (this.limit - this.cursor < s.length) return false;
211
+ if (this.current.slice(this.cursor, this.cursor + s.length) != s)
212
+ {
213
+ return false;
214
+ }
215
+ this.cursor += s.length;
216
+ return true;
217
+ };
218
+
219
+ /**
220
+ * @param {string} s
221
+ * @return {boolean}
222
+ */
223
+ this.eq_s_b = function(s)
224
+ {
225
+ /** @protected */
226
+ if (this.cursor - this.limit_backward < s.length) return false;
227
+ if (this.current.slice(this.cursor - s.length, this.cursor) != s)
228
+ {
229
+ return false;
230
+ }
231
+ this.cursor -= s.length;
232
+ return true;
233
+ };
234
+
235
+ /**
236
+ * @param {Among[]} v
237
+ * @return {number}
238
+ */
239
+ this.find_among = function(v)
240
+ {
241
+ /** @protected */
242
+ var i = 0;
243
+ var j = v.length;
244
+
245
+ var c = this.cursor;
246
+ var l = this.limit;
247
+
248
+ var common_i = 0;
249
+ var common_j = 0;
250
+
251
+ var first_key_inspected = false;
252
+
253
+ while (true)
254
+ {
255
+ var k = i + ((j - i) >>> 1);
256
+ var diff = 0;
257
+ var common = common_i < common_j ? common_i : common_j; // smaller
258
+ // w[0]: string, w[1]: substring_i, w[2]: result, w[3]: function (optional)
259
+ var w = v[k];
260
+ var i2;
261
+ for (i2 = common; i2 < w[0].length; i2++)
262
+ {
263
+ if (c + common == l)
264
+ {
265
+ diff = -1;
266
+ break;
267
+ }
268
+ diff = this.current.charCodeAt(c + common) - w[0].charCodeAt(i2);
269
+ if (diff != 0) break;
270
+ common++;
271
+ }
272
+ if (diff < 0)
273
+ {
274
+ j = k;
275
+ common_j = common;
276
+ }
277
+ else
278
+ {
279
+ i = k;
280
+ common_i = common;
281
+ }
282
+ if (j - i <= 1)
283
+ {
284
+ if (i > 0) break; // v->s has been inspected
285
+ if (j == i) break; // only one item in v
286
+
287
+ // - but now we need to go round once more to get
288
+ // v->s inspected. This looks messy, but is actually
289
+ // the optimal approach.
290
+
291
+ if (first_key_inspected) break;
292
+ first_key_inspected = true;
293
+ }
294
+ }
295
+ do {
296
+ var w = v[i];
297
+ if (common_i >= w[0].length)
298
+ {
299
+ this.cursor = c + w[0].length;
300
+ if (w.length < 4) return w[2];
301
+ var res = w[3](this);
302
+ this.cursor = c + w[0].length;
303
+ if (res) return w[2];
304
+ }
305
+ i = w[1];
306
+ } while (i >= 0);
307
+ return 0;
308
+ };
309
+
310
+ // find_among_b is for backwards processing. Same comments apply
311
+ /**
312
+ * @param {Among[]} v
313
+ * @return {number}
314
+ */
315
+ this.find_among_b = function(v)
316
+ {
317
+ /** @protected */
318
+ var i = 0;
319
+ var j = v.length
320
+
321
+ var c = this.cursor;
322
+ var lb = this.limit_backward;
323
+
324
+ var common_i = 0;
325
+ var common_j = 0;
326
+
327
+ var first_key_inspected = false;
328
+
329
+ while (true)
330
+ {
331
+ var k = i + ((j - i) >> 1);
332
+ var diff = 0;
333
+ var common = common_i < common_j ? common_i : common_j;
334
+ var w = v[k];
335
+ var i2;
336
+ for (i2 = w[0].length - 1 - common; i2 >= 0; i2--)
337
+ {
338
+ if (c - common == lb)
339
+ {
340
+ diff = -1;
341
+ break;
342
+ }
343
+ diff = this.current.charCodeAt(c - 1 - common) - w[0].charCodeAt(i2);
344
+ if (diff != 0) break;
345
+ common++;
346
+ }
347
+ if (diff < 0)
348
+ {
349
+ j = k;
350
+ common_j = common;
351
+ }
352
+ else
353
+ {
354
+ i = k;
355
+ common_i = common;
356
+ }
357
+ if (j - i <= 1)
358
+ {
359
+ if (i > 0) break;
360
+ if (j == i) break;
361
+ if (first_key_inspected) break;
362
+ first_key_inspected = true;
363
+ }
364
+ }
365
+ do {
366
+ var w = v[i];
367
+ if (common_i >= w[0].length)
368
+ {
369
+ this.cursor = c - w[0].length;
370
+ if (w.length < 4) return w[2];
371
+ var res = w[3](this);
372
+ this.cursor = c - w[0].length;
373
+ if (res) return w[2];
374
+ }
375
+ i = w[1];
376
+ } while (i >= 0);
377
+ return 0;
378
+ };
379
+
380
+ /* to replace chars between c_bra and c_ket in this.current by the
381
+ * chars in s.
382
+ */
383
+ /**
384
+ * @param {number} c_bra
385
+ * @param {number} c_ket
386
+ * @param {string} s
387
+ * @return {number}
388
+ */
389
+ this.replace_s = function(c_bra, c_ket, s)
390
+ {
391
+ /** @protected */
392
+ var adjustment = s.length - (c_ket - c_bra);
393
+ this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket);
394
+ this.limit += adjustment;
395
+ if (this.cursor >= c_ket) this.cursor += adjustment;
396
+ else if (this.cursor > c_bra) this.cursor = c_bra;
397
+ return adjustment;
398
+ };
399
+
400
+ /**
401
+ * @return {boolean}
402
+ */
403
+ this.slice_check = function()
404
+ {
405
+ /** @protected */
406
+ if (this.bra < 0 ||
407
+ this.bra > this.ket ||
408
+ this.ket > this.limit ||
409
+ this.limit > this.current.length)
410
+ {
411
+ return false;
412
+ }
413
+ return true;
414
+ };
415
+
416
+ /**
417
+ * @param {number} c_bra
418
+ * @return {boolean}
419
+ */
420
+ this.slice_from = function(s)
421
+ {
422
+ /** @protected */
423
+ var result = false;
424
+ if (this.slice_check())
425
+ {
426
+ this.replace_s(this.bra, this.ket, s);
427
+ result = true;
428
+ }
429
+ return result;
430
+ };
431
+
432
+ /**
433
+ * @return {boolean}
434
+ */
435
+ this.slice_del = function()
436
+ {
437
+ /** @protected */
438
+ return this.slice_from("");
439
+ };
440
+
441
+ /**
442
+ * @param {number} c_bra
443
+ * @param {number} c_ket
444
+ * @param {string} s
445
+ */
446
+ this.insert = function(c_bra, c_ket, s)
447
+ {
448
+ /** @protected */
449
+ var adjustment = this.replace_s(c_bra, c_ket, s);
450
+ if (c_bra <= this.bra) this.bra += adjustment;
451
+ if (c_bra <= this.ket) this.ket += adjustment;
452
+ };
453
+
454
+ /**
455
+ * @return {string}
456
+ */
457
+ this.slice_to = function()
458
+ {
459
+ /** @protected */
460
+ var result = '';
461
+ if (this.slice_check())
462
+ {
463
+ result = this.current.slice(this.bra, this.ket);
464
+ }
465
+ return result;
466
+ };
467
+
468
+ /**
469
+ * @return {string}
470
+ */
471
+ this.assign_to = function()
472
+ {
473
+ /** @protected */
474
+ return this.current.slice(0, this.limit);
475
+ };
476
+ };