mlmm-toolkit 0.2.7__tar.gz → 0.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (873) hide show
  1. mlmm_toolkit-0.3.0/.github/scripts/check_all_scan_contract.py +133 -0
  2. mlmm_toolkit-0.3.0/.github/scripts/check_engineering_markers.py +89 -0
  3. mlmm_toolkit-0.3.0/.github/scripts/check_help_registry.py +98 -0
  4. mlmm_toolkit-0.3.0/.github/scripts/check_intro_template.py +118 -0
  5. mlmm_toolkit-0.3.0/.github/scripts/check_markdown_links.py +122 -0
  6. mlmm_toolkit-0.3.0/.github/scripts/check_skill_commands.py +140 -0
  7. mlmm_toolkit-0.3.0/.github/scripts/check_skill_drift.py +186 -0
  8. mlmm_toolkit-0.3.0/.github/scripts/generate_reference.py +310 -0
  9. mlmm_toolkit-0.3.0/.github/scripts/run_docs_quality.py +79 -0
  10. mlmm_toolkit-0.3.0/.github/scripts/smoke_docs_commands.py +300 -0
  11. mlmm_toolkit-0.3.0/.github/scripts/smoke_dump_trajectories.py +253 -0
  12. mlmm_toolkit-0.3.0/.github/workflows/docs_quality.yml +42 -0
  13. mlmm_toolkit-0.3.0/.github/workflows/markers.yml +39 -0
  14. mlmm_toolkit-0.3.0/.github/workflows/pytest.yml +44 -0
  15. mlmm_toolkit-0.3.0/.gitignore +70 -0
  16. mlmm_toolkit-0.3.0/CHANGELOG.md +545 -0
  17. mlmm_toolkit-0.3.0/CITATION.cff +32 -0
  18. mlmm_toolkit-0.3.0/CONTRIBUTING.md +232 -0
  19. mlmm_toolkit-0.3.0/MANIFEST.in +10 -0
  20. mlmm_toolkit-0.3.0/PKG-INFO +926 -0
  21. mlmm_toolkit-0.3.0/README.md +181 -0
  22. mlmm_toolkit-0.3.0/THIRD_PARTY_NOTICES.txt +41 -0
  23. mlmm_toolkit-0.3.0/docs/add-elem-info.md +72 -0
  24. mlmm_toolkit-0.3.0/docs/all.md +284 -0
  25. mlmm_toolkit-0.3.0/docs/architecture.md +387 -0
  26. mlmm_toolkit-0.3.0/docs/backends.md +193 -0
  27. mlmm_toolkit-0.3.0/docs/bond-summary.md +67 -0
  28. mlmm_toolkit-0.3.0/docs/cli-conventions.md +205 -0
  29. mlmm_toolkit-0.3.0/docs/concepts.md +328 -0
  30. mlmm_toolkit-0.3.0/docs/conf.py +145 -0
  31. mlmm_toolkit-0.3.0/docs/define-layer.md +76 -0
  32. mlmm_toolkit-0.3.0/docs/device-hpc.md +197 -0
  33. mlmm_toolkit-0.3.0/docs/dft.md +138 -0
  34. mlmm_toolkit-0.3.0/docs/energy-diagram.md +58 -0
  35. mlmm_toolkit-0.3.0/docs/extract.md +228 -0
  36. mlmm_toolkit-0.3.0/docs/fix-altloc.md +121 -0
  37. mlmm_toolkit-0.3.0/docs/freq.md +163 -0
  38. mlmm_toolkit-0.3.0/docs/getting-started.md +232 -0
  39. mlmm_toolkit-0.3.0/docs/glossary.md +147 -0
  40. mlmm_toolkit-0.3.0/docs/index.md +159 -0
  41. mlmm_toolkit-0.3.0/docs/irc.md +144 -0
  42. mlmm_toolkit-0.3.0/docs/ja/add-elem-info.md +64 -0
  43. mlmm_toolkit-0.3.0/docs/ja/all.md +311 -0
  44. mlmm_toolkit-0.3.0/docs/ja/architecture.md +379 -0
  45. mlmm_toolkit-0.3.0/docs/ja/backends.md +182 -0
  46. mlmm_toolkit-0.3.0/docs/ja/bond-summary.md +67 -0
  47. mlmm_toolkit-0.3.0/docs/ja/cli-conventions.md +345 -0
  48. mlmm_toolkit-0.3.0/docs/ja/concepts.md +318 -0
  49. mlmm_toolkit-0.3.0/docs/ja/define-layer.md +78 -0
  50. mlmm_toolkit-0.3.0/docs/ja/device-hpc.md +207 -0
  51. mlmm_toolkit-0.3.0/docs/ja/dft.md +139 -0
  52. mlmm_toolkit-0.3.0/docs/ja/energy-diagram.md +58 -0
  53. mlmm_toolkit-0.3.0/docs/ja/extract.md +242 -0
  54. mlmm_toolkit-0.3.0/docs/ja/fix-altloc.md +134 -0
  55. mlmm_toolkit-0.3.0/docs/ja/freq.md +167 -0
  56. mlmm_toolkit-0.3.0/docs/ja/getting-started.md +564 -0
  57. mlmm_toolkit-0.3.0/docs/ja/glossary.md +151 -0
  58. mlmm_toolkit-0.3.0/docs/ja/index.md +305 -0
  59. mlmm_toolkit-0.3.0/docs/ja/irc.md +188 -0
  60. mlmm_toolkit-0.3.0/docs/ja/json-output.md +209 -0
  61. mlmm_toolkit-0.3.0/docs/ja/mcp_server.md +110 -0
  62. mlmm_toolkit-0.3.0/docs/ja/mlmm-calc.md +138 -0
  63. mlmm_toolkit-0.3.0/docs/ja/mm-parm.md +83 -0
  64. mlmm_toolkit-0.3.0/docs/ja/oniom-export.md +78 -0
  65. mlmm_toolkit-0.3.0/docs/ja/oniom-gaussian.md +68 -0
  66. mlmm_toolkit-0.3.0/docs/ja/oniom-import.md +73 -0
  67. mlmm_toolkit-0.3.0/docs/ja/oniom-orca.md +70 -0
  68. mlmm_toolkit-0.3.0/docs/ja/opt.md +288 -0
  69. mlmm_toolkit-0.3.0/docs/ja/output-layout.md +85 -0
  70. mlmm_toolkit-0.3.0/docs/ja/path-opt.md +125 -0
  71. mlmm_toolkit-0.3.0/docs/ja/path-search.md +152 -0
  72. mlmm_toolkit-0.3.0/docs/ja/python-api.md +159 -0
  73. mlmm_toolkit-0.3.0/docs/ja/quickstart-all.md +37 -0
  74. mlmm_toolkit-0.3.0/docs/ja/quickstart-scan-spec.md +62 -0
  75. mlmm_toolkit-0.3.0/docs/ja/quickstart-tsopt-freq.md +50 -0
  76. mlmm_toolkit-0.3.0/docs/ja/recipes-common-errors.md +87 -0
  77. mlmm_toolkit-0.3.0/docs/ja/reproducibility.md +47 -0
  78. mlmm_toolkit-0.3.0/docs/ja/scan.md +269 -0
  79. mlmm_toolkit-0.3.0/docs/ja/scan2d.md +215 -0
  80. mlmm_toolkit-0.3.0/docs/ja/scan3d.md +194 -0
  81. mlmm_toolkit-0.3.0/docs/ja/sp.md +94 -0
  82. mlmm_toolkit-0.3.0/docs/ja/trj2fig.md +71 -0
  83. mlmm_toolkit-0.3.0/docs/ja/troubleshooting.md +577 -0
  84. mlmm_toolkit-0.3.0/docs/ja/tsopt.md +322 -0
  85. mlmm_toolkit-0.3.0/docs/ja/yaml-reference.md +656 -0
  86. mlmm_toolkit-0.3.0/docs/json-output.md +279 -0
  87. mlmm_toolkit-0.3.0/docs/mcp_server.md +131 -0
  88. mlmm_toolkit-0.3.0/docs/mlmm-calc.md +127 -0
  89. mlmm_toolkit-0.3.0/docs/mlmm_toolkit_overview.png +0 -0
  90. mlmm_toolkit-0.3.0/docs/mm-parm.md +83 -0
  91. mlmm_toolkit-0.3.0/docs/oniom-export.md +78 -0
  92. mlmm_toolkit-0.3.0/docs/oniom-gaussian.md +70 -0
  93. mlmm_toolkit-0.3.0/docs/oniom-import.md +74 -0
  94. mlmm_toolkit-0.3.0/docs/oniom-orca.md +72 -0
  95. mlmm_toolkit-0.3.0/docs/opt.md +156 -0
  96. mlmm_toolkit-0.3.0/docs/output-layout.md +86 -0
  97. mlmm_toolkit-0.3.0/docs/path-opt.md +125 -0
  98. mlmm_toolkit-0.3.0/docs/path-search.md +139 -0
  99. mlmm_toolkit-0.3.0/docs/python-api.md +161 -0
  100. mlmm_toolkit-0.3.0/docs/quickstart-all.md +40 -0
  101. mlmm_toolkit-0.3.0/docs/quickstart-scan-spec.md +62 -0
  102. mlmm_toolkit-0.3.0/docs/quickstart-tsopt-freq.md +50 -0
  103. mlmm_toolkit-0.3.0/docs/recipes-common-errors.md +94 -0
  104. mlmm_toolkit-0.3.0/docs/reference/commands/add_elem_info.md +22 -0
  105. mlmm_toolkit-0.3.0/docs/reference/commands/all.md +250 -0
  106. mlmm_toolkit-0.3.0/docs/reference/commands/bond_summary.md +26 -0
  107. mlmm_toolkit-0.3.0/docs/reference/commands/define_layer.md +32 -0
  108. mlmm_toolkit-0.3.0/docs/reference/commands/dft.md +104 -0
  109. mlmm_toolkit-0.3.0/docs/reference/commands/energy_diagram.md +28 -0
  110. mlmm_toolkit-0.3.0/docs/reference/commands/extract.md +61 -0
  111. mlmm_toolkit-0.3.0/docs/reference/commands/fix_altloc.md +31 -0
  112. mlmm_toolkit-0.3.0/docs/reference/commands/freq.md +148 -0
  113. mlmm_toolkit-0.3.0/docs/reference/commands/index.md +56 -0
  114. mlmm_toolkit-0.3.0/docs/reference/commands/irc.md +138 -0
  115. mlmm_toolkit-0.3.0/docs/reference/commands/mm_parm.md +40 -0
  116. mlmm_toolkit-0.3.0/docs/reference/commands/oniom_export.md +53 -0
  117. mlmm_toolkit-0.3.0/docs/reference/commands/oniom_import.md +24 -0
  118. mlmm_toolkit-0.3.0/docs/reference/commands/opt.md +171 -0
  119. mlmm_toolkit-0.3.0/docs/reference/commands/path_opt.md +142 -0
  120. mlmm_toolkit-0.3.0/docs/reference/commands/path_search.md +151 -0
  121. mlmm_toolkit-0.3.0/docs/reference/commands/scan.md +152 -0
  122. mlmm_toolkit-0.3.0/docs/reference/commands/scan2d.md +139 -0
  123. mlmm_toolkit-0.3.0/docs/reference/commands/scan3d.md +142 -0
  124. mlmm_toolkit-0.3.0/docs/reference/commands/sp.md +115 -0
  125. mlmm_toolkit-0.3.0/docs/reference/commands/trj2fig.md +31 -0
  126. mlmm_toolkit-0.3.0/docs/reference/commands/tsopt.md +175 -0
  127. mlmm_toolkit-0.3.0/docs/reference/yaml.md +122 -0
  128. mlmm_toolkit-0.3.0/docs/reproducibility.md +77 -0
  129. mlmm_toolkit-0.3.0/docs/scan.md +264 -0
  130. mlmm_toolkit-0.3.0/docs/scan2d.md +215 -0
  131. mlmm_toolkit-0.3.0/docs/scan3d.md +202 -0
  132. mlmm_toolkit-0.3.0/docs/sp.md +92 -0
  133. mlmm_toolkit-0.3.0/docs/trj2fig.md +76 -0
  134. mlmm_toolkit-0.3.0/docs/troubleshooting.md +175 -0
  135. mlmm_toolkit-0.3.0/docs/tsopt.md +245 -0
  136. mlmm_toolkit-0.3.0/docs/yaml-reference.md +680 -0
  137. mlmm_toolkit-0.3.0/examples/mcp_client_config.json +15 -0
  138. mlmm_toolkit-0.3.0/examples/toy_system/opt_ase.py +22 -0
  139. mlmm_toolkit-0.3.0/examples/toy_system/run.sh +100 -0
  140. mlmm_toolkit-0.3.0/examples/toy_system/test_core.py +25 -0
  141. mlmm_toolkit-0.3.0/hessian_ff/README.md +65 -0
  142. mlmm_toolkit-0.3.0/hessian_ff/native/loader.py +360 -0
  143. mlmm_toolkit-0.3.0/mlmm/__init__.py +37 -0
  144. mlmm_toolkit-0.3.0/mlmm/_version.py +24 -0
  145. mlmm_toolkit-0.3.0/mlmm/backends/__init__.py +161 -0
  146. mlmm_toolkit-0.3.0/mlmm/backends/_determinism.py +109 -0
  147. mlmm_toolkit-0.3.0/mlmm/backends/custom.py +144 -0
  148. mlmm_toolkit-0.3.0/mlmm/backends/mlmm_calc.py +2608 -0
  149. mlmm_toolkit-0.3.0/mlmm/backends/xtb_embedcharge_correction.py +485 -0
  150. mlmm_toolkit-0.3.0/mlmm/cli/__init__.py +17 -0
  151. mlmm_toolkit-0.3.0/mlmm/cli/app.py +948 -0
  152. mlmm_toolkit-0.3.0/mlmm/cli/bool_compat.py +252 -0
  153. mlmm_toolkit-0.3.0/mlmm/cli/common_options.py +377 -0
  154. mlmm_toolkit-0.3.0/mlmm/cli/decorators.py +177 -0
  155. mlmm_toolkit-0.3.0/mlmm/cli/default_group.py +441 -0
  156. mlmm_toolkit-0.3.0/mlmm/cli/help_pages.py +75 -0
  157. mlmm_toolkit-0.3.0/mlmm/core/__init__.py +14 -0
  158. mlmm_toolkit-0.3.0/mlmm/core/calc_eval.py +51 -0
  159. mlmm_toolkit-0.3.0/mlmm/core/defaults.py +428 -0
  160. mlmm_toolkit-0.3.0/mlmm/core/logging.py +58 -0
  161. mlmm_toolkit-0.3.0/mlmm/core/residue_data.py +127 -0
  162. mlmm_toolkit-0.3.0/mlmm/core/utils.py +3220 -0
  163. mlmm_toolkit-0.3.0/mlmm/domain/__init__.py +12 -0
  164. mlmm_toolkit-0.3.0/mlmm/domain/add_elem_info.py +359 -0
  165. mlmm_toolkit-0.3.0/mlmm/domain/bond_changes.py +260 -0
  166. mlmm_toolkit-0.3.0/mlmm/domain/bond_summary.py +150 -0
  167. mlmm_toolkit-0.3.0/mlmm/io/__init__.py +13 -0
  168. mlmm_toolkit-0.3.0/mlmm/io/energy_diagram.py +269 -0
  169. mlmm_toolkit-0.3.0/mlmm/io/hessian_calc.py +142 -0
  170. mlmm_toolkit-0.3.0/mlmm/io/pdb_fix.py +407 -0
  171. mlmm_toolkit-0.3.0/mlmm/io/summary.py +859 -0
  172. mlmm_toolkit-0.3.0/mlmm/io/trj2fig.py +443 -0
  173. mlmm_toolkit-0.3.0/mlmm/mcp/__init__.py +25 -0
  174. mlmm_toolkit-0.3.0/mlmm/mcp/_runner.py +208 -0
  175. mlmm_toolkit-0.3.0/mlmm/mcp/_tools.py +882 -0
  176. mlmm_toolkit-0.3.0/mlmm/mcp/server.py +38 -0
  177. mlmm_toolkit-0.3.0/mlmm/workflows/__init__.py +23 -0
  178. mlmm_toolkit-0.3.0/mlmm/workflows/_all_helpers.py +463 -0
  179. mlmm_toolkit-0.3.0/mlmm/workflows/align_freeze.py +586 -0
  180. mlmm_toolkit-0.3.0/mlmm/workflows/all.py +4425 -0
  181. mlmm_toolkit-0.3.0/mlmm/workflows/define_layer.py +560 -0
  182. mlmm_toolkit-0.3.0/mlmm/workflows/dft.py +1341 -0
  183. mlmm_toolkit-0.3.0/mlmm/workflows/extract.py +2279 -0
  184. mlmm_toolkit-0.3.0/mlmm/workflows/freq.py +1679 -0
  185. mlmm_toolkit-0.3.0/mlmm/workflows/irc.py +896 -0
  186. mlmm_toolkit-0.3.0/mlmm/workflows/mm_parm.py +1079 -0
  187. mlmm_toolkit-0.3.0/mlmm/workflows/oniom_export.py +2027 -0
  188. mlmm_toolkit-0.3.0/mlmm/workflows/oniom_import.py +457 -0
  189. mlmm_toolkit-0.3.0/mlmm/workflows/opt.py +1908 -0
  190. mlmm_toolkit-0.3.0/mlmm/workflows/path_opt.py +1601 -0
  191. mlmm_toolkit-0.3.0/mlmm/workflows/path_search.py +2381 -0
  192. mlmm_toolkit-0.3.0/mlmm/workflows/restraints.py +133 -0
  193. mlmm_toolkit-0.3.0/mlmm/workflows/scan.py +1127 -0
  194. mlmm_toolkit-0.3.0/mlmm/workflows/scan2d.py +1186 -0
  195. mlmm_toolkit-0.3.0/mlmm/workflows/scan3d.py +1246 -0
  196. mlmm_toolkit-0.3.0/mlmm/workflows/scan_common.py +179 -0
  197. mlmm_toolkit-0.3.0/mlmm/workflows/sp.py +473 -0
  198. mlmm_toolkit-0.3.0/mlmm/workflows/tsopt.py +3192 -0
  199. mlmm_toolkit-0.3.0/mlmm_toolkit.egg-info/PKG-INFO +926 -0
  200. mlmm_toolkit-0.3.0/mlmm_toolkit.egg-info/SOURCES.txt +459 -0
  201. mlmm_toolkit-0.3.0/mlmm_toolkit.egg-info/entry_points.txt +3 -0
  202. mlmm_toolkit-0.3.0/mlmm_toolkit.egg-info/requires.txt +55 -0
  203. mlmm_toolkit-0.3.0/pyproject.toml +128 -0
  204. mlmm_toolkit-0.3.0/pysisyphus/Geometry.py +1755 -0
  205. mlmm_toolkit-0.3.0/pysisyphus/README.md +73 -0
  206. mlmm_toolkit-0.3.0/pysisyphus/__init__.py +13 -0
  207. mlmm_toolkit-0.3.0/pysisyphus/_array.py +79 -0
  208. mlmm_toolkit-0.3.0/pysisyphus/calculators/__init__.py +26 -0
  209. mlmm_toolkit-0.3.0/pysisyphus/cos/ChainOfStates.py +732 -0
  210. mlmm_toolkit-0.3.0/pysisyphus/cos/GrowingString.py +508 -0
  211. mlmm_toolkit-0.3.0/pysisyphus/cos/__init__.py +15 -0
  212. mlmm_toolkit-0.3.0/pysisyphus/elem_data.py +3478 -0
  213. mlmm_toolkit-0.3.0/pysisyphus/helpers.py +624 -0
  214. mlmm_toolkit-0.3.0/pysisyphus/intcoords/logging_conf.py +10 -0
  215. mlmm_toolkit-0.3.0/pysisyphus/intcoords/setup.py +965 -0
  216. mlmm_toolkit-0.3.0/pysisyphus/io/pdb.py +301 -0
  217. mlmm_toolkit-0.3.0/pysisyphus/irc/EulerPC.py +362 -0
  218. mlmm_toolkit-0.3.0/pysisyphus/irc/IRC.py +917 -0
  219. mlmm_toolkit-0.3.0/pysisyphus/irc/Instanton.py +307 -0
  220. mlmm_toolkit-0.3.0/pysisyphus/irc/__init__.py +15 -0
  221. mlmm_toolkit-0.3.0/pysisyphus/modefollow/__init__.py +7 -0
  222. mlmm_toolkit-0.3.0/pysisyphus/optimizers/HessianOptimizer.py +1270 -0
  223. mlmm_toolkit-0.3.0/pysisyphus/optimizers/Optimizer.py +1130 -0
  224. mlmm_toolkit-0.3.0/pysisyphus/optimizers/__init__.py +15 -0
  225. mlmm_toolkit-0.3.0/pysisyphus/optimizers/gdiis.py +281 -0
  226. mlmm_toolkit-0.3.0/pysisyphus/optimizers/hessian_updates.py +417 -0
  227. mlmm_toolkit-0.3.0/pysisyphus/optimizers/restrict_step.py +145 -0
  228. mlmm_toolkit-0.3.0/pysisyphus/stocastic/__init__.py +22 -0
  229. mlmm_toolkit-0.3.0/pysisyphus/tsoptimizers/RSPRFOptimizer.py +190 -0
  230. mlmm_toolkit-0.3.0/pysisyphus/tsoptimizers/TRIM.py +95 -0
  231. mlmm_toolkit-0.3.0/pysisyphus/tsoptimizers/TSHessianOptimizer.py +546 -0
  232. mlmm_toolkit-0.3.0/pysisyphus/tsoptimizers/__init__.py +23 -0
  233. mlmm_toolkit-0.3.0/skills/README.md +49 -0
  234. mlmm_toolkit-0.3.0/skills/mlmm-architecture/SKILL.md +78 -0
  235. mlmm_toolkit-0.3.0/skills/mlmm-cli/SKILL.md +157 -0
  236. mlmm_toolkit-0.3.0/skills/mlmm-cli/add-elem-info.md +62 -0
  237. mlmm_toolkit-0.3.0/skills/mlmm-cli/all-endpoint-mep.md +126 -0
  238. mlmm_toolkit-0.3.0/skills/mlmm-cli/all-scan-list.md +150 -0
  239. mlmm_toolkit-0.3.0/skills/mlmm-cli/all-ts-only.md +185 -0
  240. mlmm_toolkit-0.3.0/skills/mlmm-cli/all.md +170 -0
  241. mlmm_toolkit-0.3.0/skills/mlmm-cli/bond-summary.md +77 -0
  242. mlmm_toolkit-0.3.0/skills/mlmm-cli/define-layer.md +102 -0
  243. mlmm_toolkit-0.3.0/skills/mlmm-cli/dft.md +145 -0
  244. mlmm_toolkit-0.3.0/skills/mlmm-cli/energy-diagram.md +54 -0
  245. mlmm_toolkit-0.3.0/skills/mlmm-cli/extract.md +113 -0
  246. mlmm_toolkit-0.3.0/skills/mlmm-cli/fix-altloc.md +64 -0
  247. mlmm_toolkit-0.3.0/skills/mlmm-cli/freq.md +134 -0
  248. mlmm_toolkit-0.3.0/skills/mlmm-cli/irc.md +138 -0
  249. mlmm_toolkit-0.3.0/skills/mlmm-cli/mm-parm.md +144 -0
  250. mlmm_toolkit-0.3.0/skills/mlmm-cli/oniom-export.md +102 -0
  251. mlmm_toolkit-0.3.0/skills/mlmm-cli/oniom-import.md +85 -0
  252. mlmm_toolkit-0.3.0/skills/mlmm-cli/opt.md +108 -0
  253. mlmm_toolkit-0.3.0/skills/mlmm-cli/path-opt.md +100 -0
  254. mlmm_toolkit-0.3.0/skills/mlmm-cli/path-search.md +128 -0
  255. mlmm_toolkit-0.3.0/skills/mlmm-cli/scan.md +106 -0
  256. mlmm_toolkit-0.3.0/skills/mlmm-cli/scan2d.md +90 -0
  257. mlmm_toolkit-0.3.0/skills/mlmm-cli/scan3d.md +69 -0
  258. mlmm_toolkit-0.3.0/skills/mlmm-cli/sp.md +92 -0
  259. mlmm_toolkit-0.3.0/skills/mlmm-cli/trj2fig.md +61 -0
  260. mlmm_toolkit-0.3.0/skills/mlmm-cli/tsopt.md +149 -0
  261. mlmm_toolkit-0.3.0/skills/mlmm-env-detect/SKILL.md +178 -0
  262. mlmm_toolkit-0.3.0/skills/mlmm-hpc/SKILL.md +214 -0
  263. mlmm_toolkit-0.3.0/skills/mlmm-hpc/dynamic-dispatch.md +179 -0
  264. mlmm_toolkit-0.3.0/skills/mlmm-install-backends/SKILL.md +177 -0
  265. mlmm_toolkit-0.3.0/skills/mlmm-install-backends/aimnet2.md +81 -0
  266. mlmm_toolkit-0.3.0/skills/mlmm-install-backends/ambertools.md +84 -0
  267. mlmm_toolkit-0.3.0/skills/mlmm-install-backends/core.md +120 -0
  268. mlmm_toolkit-0.3.0/skills/mlmm-install-backends/dft.md +98 -0
  269. mlmm_toolkit-0.3.0/skills/mlmm-install-backends/env-cuda.md +162 -0
  270. mlmm_toolkit-0.3.0/skills/mlmm-install-backends/mace.md +95 -0
  271. mlmm_toolkit-0.3.0/skills/mlmm-install-backends/orb.md +95 -0
  272. mlmm_toolkit-0.3.0/skills/mlmm-install-backends/uma.md +112 -0
  273. mlmm_toolkit-0.3.0/skills/mlmm-install-backends/xtb.md +81 -0
  274. mlmm_toolkit-0.3.0/skills/mlmm-mcp/SKILL.md +123 -0
  275. mlmm_toolkit-0.3.0/skills/mlmm-overview/SKILL.md +153 -0
  276. mlmm_toolkit-0.3.0/skills/mlmm-structure-io/SKILL.md +139 -0
  277. mlmm_toolkit-0.3.0/skills/mlmm-structure-io/charge-multiplicity.md +176 -0
  278. mlmm_toolkit-0.3.0/skills/mlmm-structure-io/gjf.md +88 -0
  279. mlmm_toolkit-0.3.0/skills/mlmm-structure-io/parm7.md +118 -0
  280. mlmm_toolkit-0.3.0/skills/mlmm-structure-io/pdb.md +176 -0
  281. mlmm_toolkit-0.3.0/skills/mlmm-structure-io/xyz.md +138 -0
  282. mlmm_toolkit-0.3.0/skills/mlmm-ts-strategy/SKILL.md +122 -0
  283. mlmm_toolkit-0.3.0/skills/mlmm-workflows-output/SKILL.md +379 -0
  284. mlmm_toolkit-0.3.0/tests/README.md +28 -0
  285. mlmm_toolkit-0.3.0/tests/conftest.py +25 -0
  286. mlmm_toolkit-0.3.0/tests/smoke/check_frozen_atoms.py +42 -0
  287. mlmm_toolkit-0.3.0/tests/smoke/p_complex.parm7 +1346 -0
  288. mlmm_toolkit-0.3.0/tests/smoke/p_complex_layered.pdb +125 -0
  289. mlmm_toolkit-0.3.0/tests/smoke/pocket_r.pdb +48 -0
  290. mlmm_toolkit-0.3.0/tests/test_all_helpers.py +263 -0
  291. mlmm_toolkit-0.3.0/tests/test_all_layer_honor.py +81 -0
  292. mlmm_toolkit-0.3.0/tests/test_array_shim_equivalence.py +156 -0
  293. mlmm_toolkit-0.3.0/tests/test_bond_changes.py +127 -0
  294. mlmm_toolkit-0.3.0/tests/test_bool_compat_cli.py +117 -0
  295. mlmm_toolkit-0.3.0/tests/test_cli_feature_regressions.py +166 -0
  296. mlmm_toolkit-0.3.0/tests/test_cli_help.py +201 -0
  297. mlmm_toolkit-0.3.0/tests/test_cli_utils.py +53 -0
  298. mlmm_toolkit-0.3.0/tests/test_custom_calc_file.py +99 -0
  299. mlmm_toolkit-0.3.0/tests/test_default_group.py +204 -0
  300. mlmm_toolkit-0.3.0/tests/test_defaults.py +78 -0
  301. mlmm_toolkit-0.3.0/tests/test_e2e_minimal.py +102 -0
  302. mlmm_toolkit-0.3.0/tests/test_error_envelope.py +48 -0
  303. mlmm_toolkit-0.3.0/tests/test_error_handling.py +107 -0
  304. mlmm_toolkit-0.3.0/tests/test_extract.py +220 -0
  305. mlmm_toolkit-0.3.0/tests/test_freeze_noncart_geometry.py +100 -0
  306. mlmm_toolkit-0.3.0/tests/test_freq_active_dof.py +35 -0
  307. mlmm_toolkit-0.3.0/tests/test_help_grouping.py +25 -0
  308. mlmm_toolkit-0.3.0/tests/test_imports.py +34 -0
  309. mlmm_toolkit-0.3.0/tests/test_mcp_runner.py +36 -0
  310. mlmm_toolkit-0.3.0/tests/test_mlmm_calc_serial_gap.py +60 -0
  311. mlmm_toolkit-0.3.0/tests/test_mm_parm_preflight.py +81 -0
  312. mlmm_toolkit-0.3.0/tests/test_opt.py +97 -0
  313. mlmm_toolkit-0.3.0/tests/test_precision_dispatch.py +58 -0
  314. mlmm_toolkit-0.3.0/tests/test_preflight.py +62 -0
  315. mlmm_toolkit-0.3.0/tests/test_scan_oniom_smoke.py +416 -0
  316. mlmm_toolkit-0.3.0/tests/test_summary_log.py +67 -0
  317. mlmm_toolkit-0.3.0/tests/test_symmetrize.py +49 -0
  318. mlmm_toolkit-0.3.0/tests/test_utils.py +290 -0
  319. mlmm_toolkit-0.3.0/tests/test_write_result_json.py +62 -0
  320. mlmm_toolkit-0.3.0/thermoanalysis/README.md +46 -0
  321. mlmm_toolkit-0.2.7/.github/workflows/docs_quality.yml +0 -42
  322. mlmm_toolkit-0.2.7/.github/workflows/pytest.yml +0 -43
  323. mlmm_toolkit-0.2.7/.github/workflows/smoke_test.yml +0 -125
  324. mlmm_toolkit-0.2.7/.gitignore +0 -57
  325. mlmm_toolkit-0.2.7/CHANGELOG.md +0 -111
  326. mlmm_toolkit-0.2.7/CONTRIBUTING.md +0 -47
  327. mlmm_toolkit-0.2.7/MANIFEST.in +0 -9
  328. mlmm_toolkit-0.2.7/PKG-INFO +0 -1171
  329. mlmm_toolkit-0.2.7/README.md +0 -422
  330. mlmm_toolkit-0.2.7/THIRD_PARTY_NOTICES.txt +0 -57
  331. mlmm_toolkit-0.2.7/docs/add-elem-info.md +0 -66
  332. mlmm_toolkit-0.2.7/docs/all.md +0 -385
  333. mlmm_toolkit-0.2.7/docs/bond-summary.md +0 -68
  334. mlmm_toolkit-0.2.7/docs/cli-conventions.md +0 -316
  335. mlmm_toolkit-0.2.7/docs/concepts.md +0 -313
  336. mlmm_toolkit-0.2.7/docs/conf.py +0 -154
  337. mlmm_toolkit-0.2.7/docs/define-layer.md +0 -69
  338. mlmm_toolkit-0.2.7/docs/device-hpc.md +0 -176
  339. mlmm_toolkit-0.2.7/docs/dft.md +0 -149
  340. mlmm_toolkit-0.2.7/docs/energy-diagram.md +0 -53
  341. mlmm_toolkit-0.2.7/docs/extract.md +0 -266
  342. mlmm_toolkit-0.2.7/docs/fix-altloc.md +0 -152
  343. mlmm_toolkit-0.2.7/docs/freq.md +0 -151
  344. mlmm_toolkit-0.2.7/docs/getting-started.md +0 -598
  345. mlmm_toolkit-0.2.7/docs/glossary.md +0 -151
  346. mlmm_toolkit-0.2.7/docs/index.md +0 -344
  347. mlmm_toolkit-0.2.7/docs/init.md +0 -25
  348. mlmm_toolkit-0.2.7/docs/irc.md +0 -178
  349. mlmm_toolkit-0.2.7/docs/ja/add-elem-info.md +0 -60
  350. mlmm_toolkit-0.2.7/docs/ja/all.md +0 -386
  351. mlmm_toolkit-0.2.7/docs/ja/bond-summary.md +0 -68
  352. mlmm_toolkit-0.2.7/docs/ja/cli-conventions.md +0 -318
  353. mlmm_toolkit-0.2.7/docs/ja/concepts.md +0 -306
  354. mlmm_toolkit-0.2.7/docs/ja/define-layer.md +0 -75
  355. mlmm_toolkit-0.2.7/docs/ja/device-hpc.md +0 -182
  356. mlmm_toolkit-0.2.7/docs/ja/dft.md +0 -151
  357. mlmm_toolkit-0.2.7/docs/ja/energy-diagram.md +0 -55
  358. mlmm_toolkit-0.2.7/docs/ja/extract.md +0 -268
  359. mlmm_toolkit-0.2.7/docs/ja/fix-altloc.md +0 -152
  360. mlmm_toolkit-0.2.7/docs/ja/freq.md +0 -154
  361. mlmm_toolkit-0.2.7/docs/ja/getting-started.md +0 -572
  362. mlmm_toolkit-0.2.7/docs/ja/glossary.md +0 -151
  363. mlmm_toolkit-0.2.7/docs/ja/index.md +0 -295
  364. mlmm_toolkit-0.2.7/docs/ja/init.md +0 -27
  365. mlmm_toolkit-0.2.7/docs/ja/irc.md +0 -185
  366. mlmm_toolkit-0.2.7/docs/ja/json-output.md +0 -183
  367. mlmm_toolkit-0.2.7/docs/ja/mlmm-calc.md +0 -138
  368. mlmm_toolkit-0.2.7/docs/ja/mm-parm.md +0 -87
  369. mlmm_toolkit-0.2.7/docs/ja/oniom-export.md +0 -38
  370. mlmm_toolkit-0.2.7/docs/ja/oniom-gaussian.md +0 -78
  371. mlmm_toolkit-0.2.7/docs/ja/oniom-import.md +0 -70
  372. mlmm_toolkit-0.2.7/docs/ja/oniom-orca.md +0 -82
  373. mlmm_toolkit-0.2.7/docs/ja/opt.md +0 -286
  374. mlmm_toolkit-0.2.7/docs/ja/path-opt.md +0 -162
  375. mlmm_toolkit-0.2.7/docs/ja/path-search.md +0 -158
  376. mlmm_toolkit-0.2.7/docs/ja/pysis.md +0 -172
  377. mlmm_toolkit-0.2.7/docs/ja/python-api.md +0 -179
  378. mlmm_toolkit-0.2.7/docs/ja/quickstart-all.md +0 -37
  379. mlmm_toolkit-0.2.7/docs/ja/quickstart-scan-spec.md +0 -61
  380. mlmm_toolkit-0.2.7/docs/ja/quickstart-tsopt-freq.md +0 -50
  381. mlmm_toolkit-0.2.7/docs/ja/recipes-common-errors.md +0 -59
  382. mlmm_toolkit-0.2.7/docs/ja/scan.md +0 -267
  383. mlmm_toolkit-0.2.7/docs/ja/scan2d.md +0 -222
  384. mlmm_toolkit-0.2.7/docs/ja/scan3d.md +0 -224
  385. mlmm_toolkit-0.2.7/docs/ja/trj2fig.md +0 -78
  386. mlmm_toolkit-0.2.7/docs/ja/troubleshooting.md +0 -527
  387. mlmm_toolkit-0.2.7/docs/ja/tsopt.md +0 -239
  388. mlmm_toolkit-0.2.7/docs/ja/yaml-reference.md +0 -626
  389. mlmm_toolkit-0.2.7/docs/json-output.md +0 -255
  390. mlmm_toolkit-0.2.7/docs/mlmm-calc.md +0 -134
  391. mlmm_toolkit-0.2.7/docs/mlmm_toolkit_overview.png +0 -0
  392. mlmm_toolkit-0.2.7/docs/mm-parm.md +0 -84
  393. mlmm_toolkit-0.2.7/docs/oniom-export.md +0 -36
  394. mlmm_toolkit-0.2.7/docs/oniom-gaussian.md +0 -75
  395. mlmm_toolkit-0.2.7/docs/oniom-import.md +0 -68
  396. mlmm_toolkit-0.2.7/docs/oniom-orca.md +0 -79
  397. mlmm_toolkit-0.2.7/docs/opt.md +0 -282
  398. mlmm_toolkit-0.2.7/docs/path-opt.md +0 -163
  399. mlmm_toolkit-0.2.7/docs/path-search.md +0 -155
  400. mlmm_toolkit-0.2.7/docs/pysis.md +0 -172
  401. mlmm_toolkit-0.2.7/docs/python-api.md +0 -179
  402. mlmm_toolkit-0.2.7/docs/quickstart-all.md +0 -37
  403. mlmm_toolkit-0.2.7/docs/quickstart-scan-spec.md +0 -59
  404. mlmm_toolkit-0.2.7/docs/quickstart-tsopt-freq.md +0 -50
  405. mlmm_toolkit-0.2.7/docs/recipes-common-errors.md +0 -59
  406. mlmm_toolkit-0.2.7/docs/reference/commands/add_elem_info.md +0 -18
  407. mlmm_toolkit-0.2.7/docs/reference/commands/all.md +0 -211
  408. mlmm_toolkit-0.2.7/docs/reference/commands/bond_summary.md +0 -21
  409. mlmm_toolkit-0.2.7/docs/reference/commands/define_layer.md +0 -28
  410. mlmm_toolkit-0.2.7/docs/reference/commands/dft.md +0 -87
  411. mlmm_toolkit-0.2.7/docs/reference/commands/energy_diagram.md +0 -19
  412. mlmm_toolkit-0.2.7/docs/reference/commands/extract.md +0 -52
  413. mlmm_toolkit-0.2.7/docs/reference/commands/fix_altloc.md +0 -27
  414. mlmm_toolkit-0.2.7/docs/reference/commands/freq.md +0 -117
  415. mlmm_toolkit-0.2.7/docs/reference/commands/index.md +0 -54
  416. mlmm_toolkit-0.2.7/docs/reference/commands/irc.md +0 -104
  417. mlmm_toolkit-0.2.7/docs/reference/commands/mm_parm.md +0 -35
  418. mlmm_toolkit-0.2.7/docs/reference/commands/oniom_export.md +0 -44
  419. mlmm_toolkit-0.2.7/docs/reference/commands/oniom_import.md +0 -21
  420. mlmm_toolkit-0.2.7/docs/reference/commands/opt.md +0 -123
  421. mlmm_toolkit-0.2.7/docs/reference/commands/path_opt.md +0 -105
  422. mlmm_toolkit-0.2.7/docs/reference/commands/path_search.md +0 -116
  423. mlmm_toolkit-0.2.7/docs/reference/commands/pysis.md +0 -20
  424. mlmm_toolkit-0.2.7/docs/reference/commands/scan.md +0 -117
  425. mlmm_toolkit-0.2.7/docs/reference/commands/scan2d.md +0 -106
  426. mlmm_toolkit-0.2.7/docs/reference/commands/scan3d.md +0 -107
  427. mlmm_toolkit-0.2.7/docs/reference/commands/trj2fig.md +0 -27
  428. mlmm_toolkit-0.2.7/docs/reference/commands/tsopt.md +0 -137
  429. mlmm_toolkit-0.2.7/docs/reference/yaml.md +0 -122
  430. mlmm_toolkit-0.2.7/docs/scan.md +0 -279
  431. mlmm_toolkit-0.2.7/docs/scan2d.md +0 -217
  432. mlmm_toolkit-0.2.7/docs/scan3d.md +0 -226
  433. mlmm_toolkit-0.2.7/docs/trj2fig.md +0 -79
  434. mlmm_toolkit-0.2.7/docs/troubleshooting.md +0 -511
  435. mlmm_toolkit-0.2.7/docs/tsopt.md +0 -237
  436. mlmm_toolkit-0.2.7/docs/yaml-reference.md +0 -654
  437. mlmm_toolkit-0.2.7/examples/toy_system/opt_ase.py +0 -22
  438. mlmm_toolkit-0.2.7/examples/toy_system/run.sh +0 -102
  439. mlmm_toolkit-0.2.7/examples/toy_system/test_core.py +0 -25
  440. mlmm_toolkit-0.2.7/hessian_ff/native/loader.py +0 -349
  441. mlmm_toolkit-0.2.7/mlmm/__init__.py +0 -36
  442. mlmm_toolkit-0.2.7/mlmm/_version.py +0 -24
  443. mlmm_toolkit-0.2.7/mlmm/add_elem_info.py +0 -374
  444. mlmm_toolkit-0.2.7/mlmm/advanced_help.py +0 -91
  445. mlmm_toolkit-0.2.7/mlmm/align_freeze_atoms.py +0 -601
  446. mlmm_toolkit-0.2.7/mlmm/all.py +0 -4022
  447. mlmm_toolkit-0.2.7/mlmm/bond_changes.py +0 -234
  448. mlmm_toolkit-0.2.7/mlmm/bond_summary.py +0 -92
  449. mlmm_toolkit-0.2.7/mlmm/bool_compat.py +0 -246
  450. mlmm_toolkit-0.2.7/mlmm/cli.py +0 -587
  451. mlmm_toolkit-0.2.7/mlmm/cli_utils.py +0 -166
  452. mlmm_toolkit-0.2.7/mlmm/default_group.py +0 -343
  453. mlmm_toolkit-0.2.7/mlmm/defaults.py +0 -468
  454. mlmm_toolkit-0.2.7/mlmm/define_layer.py +0 -526
  455. mlmm_toolkit-0.2.7/mlmm/dft.py +0 -1144
  456. mlmm_toolkit-0.2.7/mlmm/energy_diagram.py +0 -253
  457. mlmm_toolkit-0.2.7/mlmm/extract.py +0 -2315
  458. mlmm_toolkit-0.2.7/mlmm/fix_altloc.py +0 -464
  459. mlmm_toolkit-0.2.7/mlmm/freq.py +0 -1526
  460. mlmm_toolkit-0.2.7/mlmm/harmonic_constraints.py +0 -140
  461. mlmm_toolkit-0.2.7/mlmm/hessian_calc.py +0 -174
  462. mlmm_toolkit-0.2.7/mlmm/irc.py +0 -796
  463. mlmm_toolkit-0.2.7/mlmm/mlmm_calc.py +0 -2329
  464. mlmm_toolkit-0.2.7/mlmm/mm_parm.py +0 -945
  465. mlmm_toolkit-0.2.7/mlmm/oniom_export.py +0 -1989
  466. mlmm_toolkit-0.2.7/mlmm/oniom_import.py +0 -457
  467. mlmm_toolkit-0.2.7/mlmm/opt.py +0 -1876
  468. mlmm_toolkit-0.2.7/mlmm/path_opt.py +0 -1511
  469. mlmm_toolkit-0.2.7/mlmm/path_search.py +0 -2353
  470. mlmm_toolkit-0.2.7/mlmm/pysis_runner.py +0 -45
  471. mlmm_toolkit-0.2.7/mlmm/scan.py +0 -1163
  472. mlmm_toolkit-0.2.7/mlmm/scan2d.py +0 -1299
  473. mlmm_toolkit-0.2.7/mlmm/scan3d.py +0 -1355
  474. mlmm_toolkit-0.2.7/mlmm/scan_common.py +0 -184
  475. mlmm_toolkit-0.2.7/mlmm/summary_log.py +0 -816
  476. mlmm_toolkit-0.2.7/mlmm/trj2fig.py +0 -448
  477. mlmm_toolkit-0.2.7/mlmm/tsopt.py +0 -3073
  478. mlmm_toolkit-0.2.7/mlmm/utils.py +0 -2529
  479. mlmm_toolkit-0.2.7/mlmm/xtb_embedcharge_correction.py +0 -480
  480. mlmm_toolkit-0.2.7/mlmm_toolkit.egg-info/PKG-INFO +0 -1171
  481. mlmm_toolkit-0.2.7/mlmm_toolkit.egg-info/SOURCES.txt +0 -551
  482. mlmm_toolkit-0.2.7/mlmm_toolkit.egg-info/entry_points.txt +0 -2
  483. mlmm_toolkit-0.2.7/mlmm_toolkit.egg-info/requires.txt +0 -58
  484. mlmm_toolkit-0.2.7/pyproject.toml +0 -117
  485. mlmm_toolkit-0.2.7/pysisyphus/Geometry.py +0 -1667
  486. mlmm_toolkit-0.2.7/pysisyphus/TableFormatter.py +0 -63
  487. mlmm_toolkit-0.2.7/pysisyphus/__init__.py +0 -12
  488. mlmm_toolkit-0.2.7/pysisyphus/calculators/AFIR.py +0 -452
  489. mlmm_toolkit-0.2.7/pysisyphus/calculators/AnaPot.py +0 -20
  490. mlmm_toolkit-0.2.7/pysisyphus/calculators/AnaPot2.py +0 -48
  491. mlmm_toolkit-0.2.7/pysisyphus/calculators/AnaPot3.py +0 -12
  492. mlmm_toolkit-0.2.7/pysisyphus/calculators/AnaPot4.py +0 -20
  493. mlmm_toolkit-0.2.7/pysisyphus/calculators/AnaPotBase.py +0 -337
  494. mlmm_toolkit-0.2.7/pysisyphus/calculators/AnaPotCBM.py +0 -25
  495. mlmm_toolkit-0.2.7/pysisyphus/calculators/AtomAtomTransTorque.py +0 -154
  496. mlmm_toolkit-0.2.7/pysisyphus/calculators/CFOUR.py +0 -250
  497. mlmm_toolkit-0.2.7/pysisyphus/calculators/CerjanMiller.py +0 -24
  498. mlmm_toolkit-0.2.7/pysisyphus/calculators/Composite.py +0 -123
  499. mlmm_toolkit-0.2.7/pysisyphus/calculators/ConicalIntersection.py +0 -171
  500. mlmm_toolkit-0.2.7/pysisyphus/calculators/DFTBp.py +0 -430
  501. mlmm_toolkit-0.2.7/pysisyphus/calculators/DFTD3.py +0 -66
  502. mlmm_toolkit-0.2.7/pysisyphus/calculators/DFTD4.py +0 -84
  503. mlmm_toolkit-0.2.7/pysisyphus/calculators/Dalton.py +0 -61
  504. mlmm_toolkit-0.2.7/pysisyphus/calculators/Dummy.py +0 -20
  505. mlmm_toolkit-0.2.7/pysisyphus/calculators/EGO.py +0 -76
  506. mlmm_toolkit-0.2.7/pysisyphus/calculators/EnergyMin.py +0 -224
  507. mlmm_toolkit-0.2.7/pysisyphus/calculators/ExternalPotential.py +0 -264
  508. mlmm_toolkit-0.2.7/pysisyphus/calculators/FakeASE.py +0 -35
  509. mlmm_toolkit-0.2.7/pysisyphus/calculators/FourWellAnaPot.py +0 -28
  510. mlmm_toolkit-0.2.7/pysisyphus/calculators/FreeEndNEBPot.py +0 -39
  511. mlmm_toolkit-0.2.7/pysisyphus/calculators/Gaussian09.py +0 -18
  512. mlmm_toolkit-0.2.7/pysisyphus/calculators/Gaussian16.py +0 -726
  513. mlmm_toolkit-0.2.7/pysisyphus/calculators/HardSphere.py +0 -159
  514. mlmm_toolkit-0.2.7/pysisyphus/calculators/IDPPCalculator.py +0 -49
  515. mlmm_toolkit-0.2.7/pysisyphus/calculators/IPIClient.py +0 -133
  516. mlmm_toolkit-0.2.7/pysisyphus/calculators/IPIServer.py +0 -234
  517. mlmm_toolkit-0.2.7/pysisyphus/calculators/LEPSBase.py +0 -24
  518. mlmm_toolkit-0.2.7/pysisyphus/calculators/LEPSExpr.py +0 -139
  519. mlmm_toolkit-0.2.7/pysisyphus/calculators/LennardJones.py +0 -80
  520. mlmm_toolkit-0.2.7/pysisyphus/calculators/MOPAC.py +0 -219
  521. mlmm_toolkit-0.2.7/pysisyphus/calculators/MullerBrownSympyPot.py +0 -51
  522. mlmm_toolkit-0.2.7/pysisyphus/calculators/MultiCalc.py +0 -85
  523. mlmm_toolkit-0.2.7/pysisyphus/calculators/NFK.py +0 -45
  524. mlmm_toolkit-0.2.7/pysisyphus/calculators/OBabel.py +0 -87
  525. mlmm_toolkit-0.2.7/pysisyphus/calculators/ONIOMv2.py +0 -1129
  526. mlmm_toolkit-0.2.7/pysisyphus/calculators/ORCA.py +0 -893
  527. mlmm_toolkit-0.2.7/pysisyphus/calculators/ORCA5.py +0 -6
  528. mlmm_toolkit-0.2.7/pysisyphus/calculators/OpenMM.py +0 -88
  529. mlmm_toolkit-0.2.7/pysisyphus/calculators/OpenMolcas.py +0 -281
  530. mlmm_toolkit-0.2.7/pysisyphus/calculators/OverlapCalculator.py +0 -908
  531. mlmm_toolkit-0.2.7/pysisyphus/calculators/Psi4.py +0 -218
  532. mlmm_toolkit-0.2.7/pysisyphus/calculators/PyPsi4.py +0 -37
  533. mlmm_toolkit-0.2.7/pysisyphus/calculators/PySCF.py +0 -341
  534. mlmm_toolkit-0.2.7/pysisyphus/calculators/PyXTB.py +0 -73
  535. mlmm_toolkit-0.2.7/pysisyphus/calculators/QCEngine.py +0 -106
  536. mlmm_toolkit-0.2.7/pysisyphus/calculators/Rastrigin.py +0 -22
  537. mlmm_toolkit-0.2.7/pysisyphus/calculators/Remote.py +0 -76
  538. mlmm_toolkit-0.2.7/pysisyphus/calculators/Rosenbrock.py +0 -15
  539. mlmm_toolkit-0.2.7/pysisyphus/calculators/SocketCalc.py +0 -97
  540. mlmm_toolkit-0.2.7/pysisyphus/calculators/TIP3P.py +0 -111
  541. mlmm_toolkit-0.2.7/pysisyphus/calculators/TransTorque.py +0 -161
  542. mlmm_toolkit-0.2.7/pysisyphus/calculators/Turbomole.py +0 -965
  543. mlmm_toolkit-0.2.7/pysisyphus/calculators/VRIPot.py +0 -37
  544. mlmm_toolkit-0.2.7/pysisyphus/calculators/WFOWrapper.py +0 -333
  545. mlmm_toolkit-0.2.7/pysisyphus/calculators/WFOWrapper2.py +0 -341
  546. mlmm_toolkit-0.2.7/pysisyphus/calculators/XTB.py +0 -418
  547. mlmm_toolkit-0.2.7/pysisyphus/calculators/__init__.py +0 -81
  548. mlmm_toolkit-0.2.7/pysisyphus/calculators/cosmo_data.py +0 -139
  549. mlmm_toolkit-0.2.7/pysisyphus/calculators/parser.py +0 -150
  550. mlmm_toolkit-0.2.7/pysisyphus/color.py +0 -19
  551. mlmm_toolkit-0.2.7/pysisyphus/cos/AdaptiveNEB.py +0 -230
  552. mlmm_toolkit-0.2.7/pysisyphus/cos/ChainOfStates.py +0 -725
  553. mlmm_toolkit-0.2.7/pysisyphus/cos/FreeEndNEB.py +0 -25
  554. mlmm_toolkit-0.2.7/pysisyphus/cos/FreezingString.py +0 -103
  555. mlmm_toolkit-0.2.7/pysisyphus/cos/GrowingNT.py +0 -309
  556. mlmm_toolkit-0.2.7/pysisyphus/cos/GrowingString.py +0 -508
  557. mlmm_toolkit-0.2.7/pysisyphus/cos/NEB.py +0 -189
  558. mlmm_toolkit-0.2.7/pysisyphus/cos/SimpleZTS.py +0 -64
  559. mlmm_toolkit-0.2.7/pysisyphus/cos/__init__.py +0 -22
  560. mlmm_toolkit-0.2.7/pysisyphus/cos/stiffness.py +0 -199
  561. mlmm_toolkit-0.2.7/pysisyphus/drivers/__init__.py +0 -17
  562. mlmm_toolkit-0.2.7/pysisyphus/drivers/afir.py +0 -855
  563. mlmm_toolkit-0.2.7/pysisyphus/drivers/barriers.py +0 -271
  564. mlmm_toolkit-0.2.7/pysisyphus/drivers/birkholz.py +0 -138
  565. mlmm_toolkit-0.2.7/pysisyphus/drivers/cluster.py +0 -318
  566. mlmm_toolkit-0.2.7/pysisyphus/drivers/diabatization.py +0 -133
  567. mlmm_toolkit-0.2.7/pysisyphus/drivers/merge.py +0 -368
  568. mlmm_toolkit-0.2.7/pysisyphus/drivers/merge_mol2.py +0 -322
  569. mlmm_toolkit-0.2.7/pysisyphus/drivers/opt.py +0 -375
  570. mlmm_toolkit-0.2.7/pysisyphus/drivers/perf.py +0 -91
  571. mlmm_toolkit-0.2.7/pysisyphus/drivers/pka.py +0 -52
  572. mlmm_toolkit-0.2.7/pysisyphus/drivers/precon_pos_rot.py +0 -669
  573. mlmm_toolkit-0.2.7/pysisyphus/drivers/rates.py +0 -480
  574. mlmm_toolkit-0.2.7/pysisyphus/drivers/replace.py +0 -219
  575. mlmm_toolkit-0.2.7/pysisyphus/drivers/scan.py +0 -212
  576. mlmm_toolkit-0.2.7/pysisyphus/drivers/spectrum.py +0 -166
  577. mlmm_toolkit-0.2.7/pysisyphus/drivers/thermo.py +0 -31
  578. mlmm_toolkit-0.2.7/pysisyphus/dynamics/Gaussian.py +0 -103
  579. mlmm_toolkit-0.2.7/pysisyphus/dynamics/__init__.py +0 -20
  580. mlmm_toolkit-0.2.7/pysisyphus/dynamics/colvars.py +0 -136
  581. mlmm_toolkit-0.2.7/pysisyphus/dynamics/driver.py +0 -297
  582. mlmm_toolkit-0.2.7/pysisyphus/dynamics/helpers.py +0 -256
  583. mlmm_toolkit-0.2.7/pysisyphus/dynamics/lincs.py +0 -105
  584. mlmm_toolkit-0.2.7/pysisyphus/dynamics/mdp.py +0 -364
  585. mlmm_toolkit-0.2.7/pysisyphus/dynamics/rattle.py +0 -121
  586. mlmm_toolkit-0.2.7/pysisyphus/dynamics/thermostats.py +0 -128
  587. mlmm_toolkit-0.2.7/pysisyphus/dynamics/wigner.py +0 -266
  588. mlmm_toolkit-0.2.7/pysisyphus/elem_data.py +0 -3473
  589. mlmm_toolkit-0.2.7/pysisyphus/exceptions.py +0 -2
  590. mlmm_toolkit-0.2.7/pysisyphus/filtertrj.py +0 -69
  591. mlmm_toolkit-0.2.7/pysisyphus/helpers.py +0 -623
  592. mlmm_toolkit-0.2.7/pysisyphus/init_logging.py +0 -50
  593. mlmm_toolkit-0.2.7/pysisyphus/intcoords/findiffs.py +0 -48
  594. mlmm_toolkit-0.2.7/pysisyphus/intcoords/generate_derivatives.py +0 -414
  595. mlmm_toolkit-0.2.7/pysisyphus/intcoords/logging_conf.py +0 -10
  596. mlmm_toolkit-0.2.7/pysisyphus/intcoords/mp_derivatives.py +0 -10836
  597. mlmm_toolkit-0.2.7/pysisyphus/intcoords/setup.py +0 -962
  598. mlmm_toolkit-0.2.7/pysisyphus/interpolate/Geodesic.py +0 -93
  599. mlmm_toolkit-0.2.7/pysisyphus/interpolate/IDPP.py +0 -55
  600. mlmm_toolkit-0.2.7/pysisyphus/interpolate/Interpolator.py +0 -116
  601. mlmm_toolkit-0.2.7/pysisyphus/interpolate/LST.py +0 -70
  602. mlmm_toolkit-0.2.7/pysisyphus/interpolate/Redund.py +0 -152
  603. mlmm_toolkit-0.2.7/pysisyphus/interpolate/__init__.py +0 -9
  604. mlmm_toolkit-0.2.7/pysisyphus/interpolate/helpers.py +0 -34
  605. mlmm_toolkit-0.2.7/pysisyphus/io/aomix.py +0 -178
  606. mlmm_toolkit-0.2.7/pysisyphus/io/cube.py +0 -220
  607. mlmm_toolkit-0.2.7/pysisyphus/io/fchk.py +0 -184
  608. mlmm_toolkit-0.2.7/pysisyphus/io/molden.py +0 -293
  609. mlmm_toolkit-0.2.7/pysisyphus/io/orca.py +0 -189
  610. mlmm_toolkit-0.2.7/pysisyphus/io/pdb.py +0 -299
  611. mlmm_toolkit-0.2.7/pysisyphus/io/psf.py +0 -79
  612. mlmm_toolkit-0.2.7/pysisyphus/io/pubchem.py +0 -31
  613. mlmm_toolkit-0.2.7/pysisyphus/io/sdf.py +0 -29
  614. mlmm_toolkit-0.2.7/pysisyphus/irc/DampedVelocityVerlet.py +0 -134
  615. mlmm_toolkit-0.2.7/pysisyphus/irc/Euler.py +0 -22
  616. mlmm_toolkit-0.2.7/pysisyphus/irc/EulerPC.py +0 -349
  617. mlmm_toolkit-0.2.7/pysisyphus/irc/GonzalezSchlegel.py +0 -187
  618. mlmm_toolkit-0.2.7/pysisyphus/irc/IMKMod.py +0 -164
  619. mlmm_toolkit-0.2.7/pysisyphus/irc/IRC.py +0 -888
  620. mlmm_toolkit-0.2.7/pysisyphus/irc/IRCDummy.py +0 -10
  621. mlmm_toolkit-0.2.7/pysisyphus/irc/Instanton.py +0 -307
  622. mlmm_toolkit-0.2.7/pysisyphus/irc/LQA.py +0 -53
  623. mlmm_toolkit-0.2.7/pysisyphus/irc/ModeKill.py +0 -136
  624. mlmm_toolkit-0.2.7/pysisyphus/irc/ParamPlot.py +0 -53
  625. mlmm_toolkit-0.2.7/pysisyphus/irc/RK4.py +0 -36
  626. mlmm_toolkit-0.2.7/pysisyphus/irc/__init__.py +0 -31
  627. mlmm_toolkit-0.2.7/pysisyphus/irc/initial_displ.py +0 -219
  628. mlmm_toolkit-0.2.7/pysisyphus/line_searches/Backtracking.py +0 -88
  629. mlmm_toolkit-0.2.7/pysisyphus/line_searches/HagerZhang.py +0 -184
  630. mlmm_toolkit-0.2.7/pysisyphus/line_searches/LineSearch.py +0 -232
  631. mlmm_toolkit-0.2.7/pysisyphus/line_searches/StrongWolfe.py +0 -108
  632. mlmm_toolkit-0.2.7/pysisyphus/line_searches/__init__.py +0 -9
  633. mlmm_toolkit-0.2.7/pysisyphus/line_searches/interpol.py +0 -15
  634. mlmm_toolkit-0.2.7/pysisyphus/modefollow/__init__.py +0 -10
  635. mlmm_toolkit-0.2.7/pysisyphus/modefollow/davidson.py +0 -199
  636. mlmm_toolkit-0.2.7/pysisyphus/optimizers/BFGS.py +0 -99
  637. mlmm_toolkit-0.2.7/pysisyphus/optimizers/ConjugateGradient.py +0 -98
  638. mlmm_toolkit-0.2.7/pysisyphus/optimizers/CubicNewton.py +0 -75
  639. mlmm_toolkit-0.2.7/pysisyphus/optimizers/FIRE.py +0 -113
  640. mlmm_toolkit-0.2.7/pysisyphus/optimizers/HessianOptimizer.py +0 -1176
  641. mlmm_toolkit-0.2.7/pysisyphus/optimizers/LayerOpt.py +0 -411
  642. mlmm_toolkit-0.2.7/pysisyphus/optimizers/MicroOptimizer.py +0 -169
  643. mlmm_toolkit-0.2.7/pysisyphus/optimizers/NCOptimizer.py +0 -90
  644. mlmm_toolkit-0.2.7/pysisyphus/optimizers/Optimizer.py +0 -1086
  645. mlmm_toolkit-0.2.7/pysisyphus/optimizers/PreconLBFGS.py +0 -260
  646. mlmm_toolkit-0.2.7/pysisyphus/optimizers/PreconSteepestDescent.py +0 -7
  647. mlmm_toolkit-0.2.7/pysisyphus/optimizers/QuickMin.py +0 -74
  648. mlmm_toolkit-0.2.7/pysisyphus/optimizers/RSA.py +0 -99
  649. mlmm_toolkit-0.2.7/pysisyphus/optimizers/StabilizedQNMethod.py +0 -248
  650. mlmm_toolkit-0.2.7/pysisyphus/optimizers/SteepestDescent.py +0 -23
  651. mlmm_toolkit-0.2.7/pysisyphus/optimizers/__init__.py +0 -41
  652. mlmm_toolkit-0.2.7/pysisyphus/optimizers/cls_map.py +0 -58
  653. mlmm_toolkit-0.2.7/pysisyphus/optimizers/gdiis.py +0 -280
  654. mlmm_toolkit-0.2.7/pysisyphus/optimizers/hessian_updates.py +0 -355
  655. mlmm_toolkit-0.2.7/pysisyphus/optimizers/precon.py +0 -153
  656. mlmm_toolkit-0.2.7/pysisyphus/optimizers/restrict_step.py +0 -24
  657. mlmm_toolkit-0.2.7/pysisyphus/pack.py +0 -172
  658. mlmm_toolkit-0.2.7/pysisyphus/peakdetect.py +0 -948
  659. mlmm_toolkit-0.2.7/pysisyphus/plot.py +0 -1031
  660. mlmm_toolkit-0.2.7/pysisyphus/run.py +0 -2106
  661. mlmm_toolkit-0.2.7/pysisyphus/socket_helper.py +0 -74
  662. mlmm_toolkit-0.2.7/pysisyphus/stocastic/__init__.py +0 -21
  663. mlmm_toolkit-0.2.7/pysisyphus/testing.py +0 -96
  664. mlmm_toolkit-0.2.7/pysisyphus/thermo.py +0 -156
  665. mlmm_toolkit-0.2.7/pysisyphus/trj.py +0 -824
  666. mlmm_toolkit-0.2.7/pysisyphus/tsoptimizers/RSPRFOptimizer.py +0 -182
  667. mlmm_toolkit-0.2.7/pysisyphus/tsoptimizers/TRIM.py +0 -59
  668. mlmm_toolkit-0.2.7/pysisyphus/tsoptimizers/TSHessianOptimizer.py +0 -463
  669. mlmm_toolkit-0.2.7/pysisyphus/tsoptimizers/__init__.py +0 -23
  670. mlmm_toolkit-0.2.7/pysisyphus/wavefunction/Basis.py +0 -239
  671. mlmm_toolkit-0.2.7/pysisyphus/wavefunction/DIIS.py +0 -76
  672. mlmm_toolkit-0.2.7/pysisyphus/wavefunction/__init__.py +0 -25
  673. mlmm_toolkit-0.2.7/pysisyphus/wavefunction/build_ext.py +0 -42
  674. mlmm_toolkit-0.2.7/pysisyphus/wavefunction/cart2sph.py +0 -190
  675. mlmm_toolkit-0.2.7/pysisyphus/wavefunction/diabatization.py +0 -304
  676. mlmm_toolkit-0.2.7/pysisyphus/wavefunction/excited_states.py +0 -435
  677. mlmm_toolkit-0.2.7/pysisyphus/wavefunction/gen_ints.py +0 -1811
  678. mlmm_toolkit-0.2.7/pysisyphus/wavefunction/helpers.py +0 -104
  679. mlmm_toolkit-0.2.7/pysisyphus/wavefunction/ints/boys.py +0 -193
  680. mlmm_toolkit-0.2.7/pysisyphus/wavefunction/ints/boys_table_N_64_xasym_27.1_step_0.01.npy +0 -0
  681. mlmm_toolkit-0.2.7/pysisyphus/wavefunction/ints/cart_gto3d.py +0 -176
  682. mlmm_toolkit-0.2.7/pysisyphus/wavefunction/ints/coulomb3d.py +0 -25928
  683. mlmm_toolkit-0.2.7/pysisyphus/wavefunction/ints/diag_quadrupole3d.py +0 -10036
  684. mlmm_toolkit-0.2.7/pysisyphus/wavefunction/ints/dipole3d.py +0 -8762
  685. mlmm_toolkit-0.2.7/pysisyphus/wavefunction/ints/int2c2e3d.py +0 -7198
  686. mlmm_toolkit-0.2.7/pysisyphus/wavefunction/ints/int3c2e3d_sph.py +0 -65040
  687. mlmm_toolkit-0.2.7/pysisyphus/wavefunction/ints/kinetic3d.py +0 -8240
  688. mlmm_toolkit-0.2.7/pysisyphus/wavefunction/ints/ovlp3d.py +0 -3777
  689. mlmm_toolkit-0.2.7/pysisyphus/wavefunction/ints/quadrupole3d.py +0 -15054
  690. mlmm_toolkit-0.2.7/pysisyphus/wavefunction/ints/self_ovlp3d.py +0 -198
  691. mlmm_toolkit-0.2.7/pysisyphus/wavefunction/localization.py +0 -458
  692. mlmm_toolkit-0.2.7/pysisyphus/wavefunction/multipole.py +0 -159
  693. mlmm_toolkit-0.2.7/pysisyphus/wavefunction/normalization.py +0 -36
  694. mlmm_toolkit-0.2.7/pysisyphus/wavefunction/pop_analysis.py +0 -134
  695. mlmm_toolkit-0.2.7/pysisyphus/wavefunction/shells.py +0 -1171
  696. mlmm_toolkit-0.2.7/pysisyphus/wavefunction/wavefunction.py +0 -504
  697. mlmm_toolkit-0.2.7/pysisyphus/wrapper/__init__.py +0 -11
  698. mlmm_toolkit-0.2.7/pysisyphus/wrapper/exceptions.py +0 -2
  699. mlmm_toolkit-0.2.7/pysisyphus/wrapper/jmol.py +0 -120
  700. mlmm_toolkit-0.2.7/pysisyphus/wrapper/mwfn.py +0 -169
  701. mlmm_toolkit-0.2.7/pysisyphus/wrapper/packmol.py +0 -71
  702. mlmm_toolkit-0.2.7/pysisyphus/yaml_mods.py +0 -45
  703. mlmm_toolkit-0.2.7/scripts/check_all_scan_contract.py +0 -123
  704. mlmm_toolkit-0.2.7/scripts/check_intro_template.py +0 -100
  705. mlmm_toolkit-0.2.7/scripts/check_markdown_links.py +0 -122
  706. mlmm_toolkit-0.2.7/scripts/generate_reference.py +0 -297
  707. mlmm_toolkit-0.2.7/scripts/run_docs_quality.py +0 -75
  708. mlmm_toolkit-0.2.7/scripts/smoke_docs_commands.py +0 -293
  709. mlmm_toolkit-0.2.7/scripts/smoke_dump_trajectories.py +0 -239
  710. mlmm_toolkit-0.2.7/tests/README.md +0 -124
  711. mlmm_toolkit-0.2.7/tests/conftest.py +0 -11
  712. mlmm_toolkit-0.2.7/tests/smoke/p_complex.rst7 +0 -63
  713. mlmm_toolkit-0.2.7/tests/smoke/pocket_p.pdb +0 -63
  714. mlmm_toolkit-0.2.7/tests/smoke/pocket_r.pdb +0 -48
  715. mlmm_toolkit-0.2.7/tests/smoke/run.sh +0 -127
  716. mlmm_toolkit-0.2.7/tests/test_bool_compat_cli.py +0 -64
  717. mlmm_toolkit-0.2.7/tests/test_cli_feature_regressions.py +0 -116
  718. mlmm_toolkit-0.2.7/tests/test_cli_help.py +0 -201
  719. mlmm_toolkit-0.2.7/tests/test_cli_utils.py +0 -53
  720. mlmm_toolkit-0.2.7/tests/test_default_group.py +0 -204
  721. mlmm_toolkit-0.2.7/tests/test_defaults.py +0 -78
  722. mlmm_toolkit-0.2.7/tests/test_e2e_minimal.py +0 -102
  723. mlmm_toolkit-0.2.7/tests/test_error_handling.py +0 -103
  724. mlmm_toolkit-0.2.7/tests/test_extract.py +0 -170
  725. mlmm_toolkit-0.2.7/tests/test_imports.py +0 -34
  726. mlmm_toolkit-0.2.7/tests/test_mm_parm_preflight.py +0 -30
  727. mlmm_toolkit-0.2.7/tests/test_opt.py +0 -97
  728. mlmm_toolkit-0.2.7/tests/test_preflight.py +0 -62
  729. mlmm_toolkit-0.2.7/tests/test_scan_oniom_smoke.py +0 -386
  730. mlmm_toolkit-0.2.7/tests/test_summary_log.py +0 -67
  731. mlmm_toolkit-0.2.7/tests/test_utils.py +0 -267
  732. mlmm_toolkit-0.2.7/thermoanalysis/__init__.py +0 -0
  733. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/.github/workflows/docs.yml +0 -0
  734. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/.github/workflows/release.yml +0 -0
  735. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/LICENSE +0 -0
  736. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/docs/Makefile +0 -0
  737. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/docs/_static/custom.css +0 -0
  738. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/docs/_static/theme_toggle.js +0 -0
  739. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/docs/_templates/page.html +0 -0
  740. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/docs/make.bat +0 -0
  741. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/docs/requirements_docs.txt +0 -0
  742. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/examples/methyltransferase/complex.parm7 +0 -0
  743. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/examples/methyltransferase/complex.pdb +0 -0
  744. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/examples/methyltransferase/complex.rst7 +0 -0
  745. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/examples/methyltransferase/pocket.pdb +0 -0
  746. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/examples/methyltransferase/r_layered.pdb +0 -0
  747. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/examples/methyltransferase/run_all.sh +0 -0
  748. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/examples/methyltransferase/run_stepwise.sh +0 -0
  749. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/examples/toy_system/ml_region_p.pdb +0 -0
  750. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/examples/toy_system/ml_region_r.pdb +0 -0
  751. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/examples/toy_system/p_complex.parm7 +0 -0
  752. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/examples/toy_system/p_complex.pdb +0 -0
  753. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/examples/toy_system/p_complex.rst7 +0 -0
  754. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/examples/toy_system/p_complex_layered.pdb +0 -0
  755. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/examples/toy_system/r_complex.pdb +0 -0
  756. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/examples/toy_system/r_complex_layered.pdb +0 -0
  757. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/hessian_ff/__init__.py +0 -0
  758. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/hessian_ff/analytical_hessian.py +0 -0
  759. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/hessian_ff/constants.py +0 -0
  760. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/hessian_ff/forcefield.py +0 -0
  761. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/hessian_ff/loaders.py +0 -0
  762. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/hessian_ff/native/Makefile +0 -0
  763. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/hessian_ff/native/__init__.py +0 -0
  764. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/hessian_ff/native/analytical_hessian.py +0 -0
  765. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/hessian_ff/native/analytical_hessian_ext.cpp +0 -0
  766. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/hessian_ff/native/bonded.py +0 -0
  767. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/hessian_ff/native/bonded_ext.cpp +0 -0
  768. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/hessian_ff/native/nonbonded.py +0 -0
  769. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/hessian_ff/native/nonbonded_ext.cpp +0 -0
  770. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/hessian_ff/prmtop_parmed.py +0 -0
  771. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/hessian_ff/system.py +0 -0
  772. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/hessian_ff/terms/__init__.py +0 -0
  773. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/hessian_ff/terms/angle.py +0 -0
  774. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/hessian_ff/terms/bond.py +0 -0
  775. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/hessian_ff/terms/cmap.py +0 -0
  776. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/hessian_ff/terms/dihedral.py +0 -0
  777. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/hessian_ff/terms/nonbonded.py +0 -0
  778. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/hessian_ff/tests/__init__.py +0 -0
  779. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/hessian_ff/tests/conftest.py +0 -0
  780. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/hessian_ff/tests/data/small/complex.parm7 +0 -0
  781. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/hessian_ff/tests/data/small/complex.pdb +0 -0
  782. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/hessian_ff/tests/data/small/complex.rst7 +0 -0
  783. {mlmm_toolkit-0.2.7/tests/smoke → mlmm_toolkit-0.3.0/hessian_ff/tests/data/small}/p_complex.parm7 +0 -0
  784. {mlmm_toolkit-0.2.7/tests/smoke → mlmm_toolkit-0.3.0/hessian_ff/tests/data/small}/p_complex_layered.pdb +0 -0
  785. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/hessian_ff/tests/test_coords_input.py +0 -0
  786. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/hessian_ff/tests/test_energy_force.py +0 -0
  787. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/hessian_ff/tests/test_hessian.py +0 -0
  788. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/hessian_ff/tests/test_smoke.py +0 -0
  789. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/hessian_ff/tests/test_validation.py +0 -0
  790. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/hessian_ff/workflows.py +0 -0
  791. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/mlmm/__main__.py +0 -0
  792. {mlmm_toolkit-0.2.7/mlmm → mlmm_toolkit-0.3.0/mlmm/cli}/preflight.py +0 -0
  793. {mlmm_toolkit-0.2.7/mlmm → mlmm_toolkit-0.3.0/mlmm/io}/hessian_cache.py +0 -0
  794. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/mlmm/py.typed +0 -0
  795. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/mlmm_toolkit.egg-info/dependency_links.txt +0 -0
  796. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/mlmm_toolkit.egg-info/top_level.txt +0 -0
  797. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/LICENSE +0 -0
  798. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/TablePrinter.py +0 -0
  799. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/calculators/Calculator.py +0 -0
  800. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/calculators/Dimer.py +0 -0
  801. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/config.py +0 -0
  802. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/constants.py +0 -0
  803. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/cos/GrowingChainOfStates.py +0 -0
  804. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/helpers_pure.py +0 -0
  805. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/intcoords/Bend.py +0 -0
  806. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/intcoords/Bend2.py +0 -0
  807. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/intcoords/BondedFragment.py +0 -0
  808. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/intcoords/Cartesian.py +0 -0
  809. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/intcoords/CartesianCoords.py +0 -0
  810. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/intcoords/Coords.py +0 -0
  811. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/intcoords/DLC.py +0 -0
  812. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/intcoords/DistanceFunction.py +0 -0
  813. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/intcoords/DummyImproper.py +0 -0
  814. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/intcoords/DummyTorsion.py +0 -0
  815. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/intcoords/LinearBend.py +0 -0
  816. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/intcoords/LinearDisplacement.py +0 -0
  817. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/intcoords/OutOfPlane.py +0 -0
  818. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/intcoords/PrimTypes.py +0 -0
  819. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/intcoords/Primitive.py +0 -0
  820. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/intcoords/RedundantCoords.py +0 -0
  821. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/intcoords/RobustTorsion.py +0 -0
  822. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/intcoords/Rotation.py +0 -0
  823. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/intcoords/Stretch.py +0 -0
  824. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/intcoords/Torsion.py +0 -0
  825. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/intcoords/Torsion2.py +0 -0
  826. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/intcoords/Translation.py +0 -0
  827. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/intcoords/__init__.py +0 -0
  828. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/intcoords/augment_bonds.py +0 -0
  829. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/intcoords/derivatives.py +0 -0
  830. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/intcoords/eval.py +0 -0
  831. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/intcoords/exceptions.py +0 -0
  832. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/intcoords/helpers.py +0 -0
  833. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/intcoords/setup_fast.py +0 -0
  834. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/intcoords/update.py +0 -0
  835. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/intcoords/valid.py +0 -0
  836. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/io/__init__.py +0 -0
  837. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/io/cjson.py +0 -0
  838. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/io/crd.py +0 -0
  839. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/io/hdf5.py +0 -0
  840. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/io/hessian.py +0 -0
  841. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/io/mol2.py +0 -0
  842. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/io/qcschema.py +0 -0
  843. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/io/xyz.py +0 -0
  844. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/io/zmat.py +0 -0
  845. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/irc/DWI.py +0 -0
  846. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/linalg.py +0 -0
  847. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/modefollow/NormalMode.py +0 -0
  848. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/modefollow/lanczos.py +0 -0
  849. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/optimizers/BacktrackingOptimizer.py +0 -0
  850. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/optimizers/LBFGS.py +0 -0
  851. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/optimizers/RFOptimizer.py +0 -0
  852. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/optimizers/StringOptimizer.py +0 -0
  853. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/optimizers/closures.py +0 -0
  854. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/optimizers/exceptions.py +0 -0
  855. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/optimizers/guess_hessians.py +0 -0
  856. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/optimizers/poly_fit.py +0 -0
  857. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/stocastic/FragmentKick.py +0 -0
  858. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/stocastic/Kick.py +0 -0
  859. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/stocastic/Pipeline.py +0 -0
  860. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/stocastic/align.py +0 -0
  861. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/tsoptimizers/RSIRFOptimizer.py +0 -0
  862. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/pysisyphus/xyzloader.py +0 -0
  863. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/setup.cfg +0 -0
  864. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/tests/smoke/p_complex.pdb +0 -0
  865. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/tests/smoke/r_complex.pdb +0 -0
  866. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/tests/smoke/r_complex_layered.pdb +0 -0
  867. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/tests/test_all_multiplicity_option.py +0 -0
  868. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/thermoanalysis/LICENSE +0 -0
  869. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/thermoanalysis/QCData.py +0 -0
  870. {mlmm_toolkit-0.2.7/pysisyphus/wavefunction/ints → mlmm_toolkit-0.3.0/thermoanalysis}/__init__.py +0 -0
  871. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/thermoanalysis/config.py +0 -0
  872. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/thermoanalysis/constants.py +0 -0
  873. {mlmm_toolkit-0.2.7 → mlmm_toolkit-0.3.0}/thermoanalysis/thermo.py +0 -0
@@ -0,0 +1,133 @@
1
+ #!/usr/bin/env python3
2
+ """Verify that options forwarded from `mlmm all` to `mlmm scan` exist on scan CLI."""
3
+
4
+ from __future__ import annotations
5
+
6
+ import ast
7
+ from pathlib import Path
8
+ from typing import Set
9
+
10
+
11
+ REPO_ROOT = Path(__file__).resolve().parents[2]
12
+ ALL_PY = REPO_ROOT / "mlmm" / "workflows" / "all.py"
13
+ SCAN_PY = REPO_ROOT / "mlmm" / "workflows" / "scan.py"
14
+ # Shared option decorators (e.g. ``add_ml_layer_detection_options``) inject
15
+ # Click flags onto ``scan.cli`` from here, so they count as declared too.
16
+ COMMON_OPTIONS_PY = REPO_ROOT / "mlmm" / "cli" / "common_options.py"
17
+
18
+
19
+ def _is_click_option_call(node: ast.Call) -> bool:
20
+ func = node.func
21
+ return (
22
+ isinstance(func, ast.Attribute)
23
+ and func.attr == "option"
24
+ and isinstance(func.value, ast.Name)
25
+ and func.value.id == "click"
26
+ )
27
+
28
+
29
+ def _const_flag(node: ast.AST) -> str | None:
30
+ if isinstance(node, ast.Constant) and isinstance(node.value, str):
31
+ value = node.value.strip()
32
+ if value.startswith("--"):
33
+ return value
34
+ return None
35
+
36
+
37
+ def _expand_flag_spec(spec: str) -> Set[str]:
38
+ # click toggle declarations may appear as "--a/--b".
39
+ parts = [p.strip() for p in spec.split("/") if p.strip()]
40
+ flags = {p for p in parts if p.startswith("--")}
41
+ if flags:
42
+ return flags
43
+ return {spec}
44
+
45
+
46
+ def _collect_scan_declared_flags(scan_tree: ast.AST) -> Set[str]:
47
+ flags: Set[str] = set()
48
+ for node in ast.walk(scan_tree):
49
+ if not isinstance(node, ast.Call) or not _is_click_option_call(node):
50
+ continue
51
+ for arg in node.args:
52
+ flag = _const_flag(arg)
53
+ if flag is not None:
54
+ flags.update(_expand_flag_spec(flag))
55
+ return flags
56
+
57
+
58
+ class _ForwardedScanFlags(ast.NodeVisitor):
59
+ def __init__(self) -> None:
60
+ self.in_cli = False
61
+ self.flags: Set[str] = set()
62
+
63
+ def visit_FunctionDef(self, node: ast.FunctionDef) -> None:
64
+ was_in_cli = self.in_cli
65
+ if node.name == "cli":
66
+ self.in_cli = True
67
+ self.generic_visit(node)
68
+ self.in_cli = was_in_cli
69
+
70
+ def visit_Assign(self, node: ast.Assign) -> None:
71
+ if self.in_cli:
72
+ for target in node.targets:
73
+ if isinstance(target, ast.Name) and target.id == "scan_args":
74
+ if isinstance(node.value, ast.List):
75
+ for elt in node.value.elts:
76
+ flag = _const_flag(elt)
77
+ if flag is not None:
78
+ self.flags.add(flag)
79
+ self.generic_visit(node)
80
+
81
+ def visit_Call(self, node: ast.Call) -> None:
82
+ if self.in_cli:
83
+ if isinstance(node.func, ast.Name) and node.func.id == "_append_cli_arg":
84
+ if len(node.args) >= 2 and isinstance(node.args[0], ast.Name) and node.args[0].id == "scan_args":
85
+ flag = _const_flag(node.args[1])
86
+ if flag is not None:
87
+ self.flags.add(flag)
88
+
89
+ if isinstance(node.func, ast.Attribute) and node.func.attr == "append":
90
+ if isinstance(node.func.value, ast.Name) and node.func.value.id == "scan_args" and node.args:
91
+ value = node.args[0]
92
+ flag = _const_flag(value)
93
+ if flag is not None:
94
+ self.flags.add(flag)
95
+ elif isinstance(value, ast.IfExp):
96
+ body_flag = _const_flag(value.body)
97
+ else_flag = _const_flag(value.orelse)
98
+ if body_flag is not None:
99
+ self.flags.add(body_flag)
100
+ if else_flag is not None:
101
+ self.flags.add(else_flag)
102
+ self.generic_visit(node)
103
+
104
+
105
+ def main() -> int:
106
+ all_tree = ast.parse(ALL_PY.read_text(encoding="utf-8"), filename=str(ALL_PY))
107
+ scan_tree = ast.parse(SCAN_PY.read_text(encoding="utf-8"), filename=str(SCAN_PY))
108
+
109
+ declared = _collect_scan_declared_flags(scan_tree)
110
+ # scan.cli also pulls in flags from shared option decorators defined in
111
+ # mlmm/cli/common_options.py (--detect-layer, --precision, ...).
112
+ if COMMON_OPTIONS_PY.exists():
113
+ common_tree = ast.parse(
114
+ COMMON_OPTIONS_PY.read_text(encoding="utf-8"), filename=str(COMMON_OPTIONS_PY)
115
+ )
116
+ declared |= _collect_scan_declared_flags(common_tree)
117
+ collector = _ForwardedScanFlags()
118
+ collector.visit(all_tree)
119
+ forwarded = collector.flags
120
+
121
+ missing = sorted(flag for flag in forwarded if flag not in declared)
122
+ if missing:
123
+ print("Detected all->scan option contract drift.")
124
+ for flag in missing:
125
+ print(f" missing in scan CLI: {flag}")
126
+ return 1
127
+
128
+ print(f"[scan-contract] all forwards {len(forwarded)} scan options; all are declared.")
129
+ return 0
130
+
131
+
132
+ if __name__ == "__main__":
133
+ raise SystemExit(main())
@@ -0,0 +1,89 @@
1
+ #!/usr/bin/env python3
2
+ """Engineering-marker coverage check.
3
+
4
+ Three static gates ported from the retired ``tests/test_fingerprint.py``:
5
+
6
+ * ``# CHEMISTRY-RULE:N`` coverage — every rule this repo is responsible for
7
+ must be annotated somewhere in the package source.
8
+ * ``# DOMAIN_PURE`` coverage — the modules that must stay backend-agnostic
9
+ carry this marker.
10
+ * External-library import scope — MLIP-only SDKs (``fairchem`` / ``orb_models``
11
+ / ``mace`` / ``aimnet``) may only be imported under ``backends/`` so the
12
+ rest of the package keeps a stable, lightweight import graph.
13
+
14
+ Run from the repository root::
15
+
16
+ python .github/scripts/check_engineering_markers.py
17
+
18
+ Exit code 0 = all gates pass, 1 = at least one violation (printed to stderr).
19
+ """
20
+ from __future__ import annotations
21
+
22
+ import re
23
+ import sys
24
+ from pathlib import Path
25
+
26
+ PKG = "mlmm"
27
+
28
+ REQUIRED_CHEMISTRY_RULES: set[int] = {1, 2, 3, 4, 5, 6, 7, 8, 9}
29
+
30
+ REQUIRED_DOMAIN_PURE: tuple[str, ...] = (
31
+ "mlmm/backends/mlmm_calc.py",
32
+ "mlmm/workflows/tsopt.py",
33
+ "mlmm/workflows/freq.py",
34
+ )
35
+
36
+ EXTERNAL_LIBS_DENY: set[str] = {"fairchem", "orb_models", "mace", "aimnet"}
37
+
38
+ REPO_ROOT = Path(__file__).resolve().parents[2]
39
+ PKG_ROOT = REPO_ROOT / PKG
40
+
41
+
42
+ def _check_chemistry_rules() -> list[str]:
43
+ found: set[int] = set()
44
+ for py in PKG_ROOT.rglob("*.py"):
45
+ for m in re.finditer(r"CHEMISTRY-RULE:(\d+)", py.read_text(errors="ignore")):
46
+ found.add(int(m.group(1)))
47
+ missing = sorted(REQUIRED_CHEMISTRY_RULES - found)
48
+ return [f"missing CHEMISTRY-RULE markers in {PKG}: {missing}"] if missing else []
49
+
50
+
51
+ def _check_domain_pure() -> list[str]:
52
+ missing = [
53
+ rel for rel in REQUIRED_DOMAIN_PURE
54
+ if "# DOMAIN_PURE" not in (REPO_ROOT / rel).read_text(errors="ignore")
55
+ ]
56
+ return [f"missing # DOMAIN_PURE marker in: {missing}"] if missing else []
57
+
58
+
59
+ def _check_external_library_scope() -> list[str]:
60
+ backends_dir = PKG_ROOT / "backends"
61
+ violations: list[str] = []
62
+ for py in PKG_ROOT.rglob("*.py"):
63
+ if backends_dir in py.parents or py == backends_dir:
64
+ continue
65
+ text = py.read_text(errors="ignore")
66
+ for mod in EXTERNAL_LIBS_DENY:
67
+ if re.search(
68
+ rf"^(?:import\s+{re.escape(mod)}\b|from\s+{re.escape(mod)})",
69
+ text, re.M,
70
+ ):
71
+ violations.append(f"{py.relative_to(REPO_ROOT)}: imports {mod}")
72
+ return ["external library import outside backends/:", *violations] if violations else []
73
+
74
+
75
+ def main() -> int:
76
+ failures: list[str] = []
77
+ failures += _check_chemistry_rules()
78
+ failures += _check_domain_pure()
79
+ failures += _check_external_library_scope()
80
+ if failures:
81
+ for line in failures:
82
+ print(line, file=sys.stderr)
83
+ return 1
84
+ print("engineering markers OK")
85
+ return 0
86
+
87
+
88
+ if __name__ == "__main__":
89
+ raise SystemExit(main())
@@ -0,0 +1,98 @@
1
+ #!/usr/bin/env python3
2
+ """Static drift check for the primary `--help` option registry.
3
+
4
+ Validates ``mlmm.cli.app._SUBCOMMAND_PRIMARY_HELP_OPTIONS`` against the actual
5
+ Click commands that back each subcommand:
6
+
7
+ * Every entry must include ``"--help-advanced"`` so the discoverability flag
8
+ itself is not hidden when the registry filters non-primary options.
9
+ * Every other token in each frozenset must correspond to an actual
10
+ ``@click.option`` opt string on the resolved Click command — long opts via
11
+ ``Option.opts`` and short opts via ``Option.opts`` / ``Option.secondary_opts``.
12
+ Orphan entries (dead aliases / removed flags) fail this check.
13
+
14
+ Run from the repository root::
15
+
16
+ python .github/scripts/check_help_registry.py
17
+
18
+ Exit 0 = registry consistent, 1 = drift (printed to stderr).
19
+ """
20
+ from __future__ import annotations
21
+
22
+ import importlib
23
+ import sys
24
+ from pathlib import Path
25
+
26
+ REPO_ROOT = Path(__file__).resolve().parents[2]
27
+ sys.path.insert(0, str(REPO_ROOT))
28
+
29
+ # ``--help-advanced`` is injected by ``cli.help_pages._ensure_help_advanced_option``
30
+ # so it is NOT declared on the lazy Click commands themselves. Treat it as the
31
+ # single allow-listed token that need not resolve to a ``command.params`` opt.
32
+ _INJECTED_OPTS: frozenset[str] = frozenset({"--help-advanced"})
33
+
34
+ from mlmm.cli.app import ( # noqa: E402
35
+ _LAZY_SUBCOMMANDS,
36
+ _SUBCOMMAND_PRIMARY_HELP_OPTIONS,
37
+ )
38
+
39
+
40
+ def _resolve_command(spec: tuple[str, str, str]):
41
+ module_name, attr, _help = spec
42
+ mod = importlib.import_module(module_name)
43
+ return getattr(mod, attr)
44
+
45
+
46
+ def _declared_opts(command) -> set[str]:
47
+ opts: set[str] = set()
48
+ for param in getattr(command, "params", ()): # click.Option / click.Argument
49
+ opts.update(getattr(param, "opts", ()) or ())
50
+ opts.update(getattr(param, "secondary_opts", ()) or ())
51
+ return opts
52
+
53
+
54
+ def main() -> int:
55
+ errors: list[str] = []
56
+
57
+ for subcmd, primary in _SUBCOMMAND_PRIMARY_HELP_OPTIONS.items():
58
+ if "--help-advanced" not in primary:
59
+ errors.append(
60
+ f"[{subcmd}] missing '--help-advanced' in primary set "
61
+ f"(would self-hide the discoverability flag)"
62
+ )
63
+
64
+ spec = _LAZY_SUBCOMMANDS.get(subcmd)
65
+ if spec is None:
66
+ errors.append(
67
+ f"[{subcmd}] registry entry has no corresponding "
68
+ f"_LAZY_SUBCOMMANDS spec"
69
+ )
70
+ continue
71
+
72
+ try:
73
+ command = _resolve_command(spec)
74
+ except Exception as exc: # pragma: no cover - import failure surfaces here
75
+ errors.append(f"[{subcmd}] could not import {spec[0]}.{spec[1]}: {exc}")
76
+ continue
77
+
78
+ declared = _declared_opts(command)
79
+ for token in sorted(primary - _INJECTED_OPTS):
80
+ if token not in declared:
81
+ errors.append(
82
+ f"[{subcmd}] primary token {token!r} is not declared by "
83
+ f"any @click.option on {spec[0]}.{spec[1]} "
84
+ f"(orphan / dead registry entry)"
85
+ )
86
+
87
+ if errors:
88
+ print("help registry drift detected:", file=sys.stderr)
89
+ for line in errors:
90
+ print(f" - {line}", file=sys.stderr)
91
+ return 1
92
+
93
+ print("help registry OK")
94
+ return 0
95
+
96
+
97
+ if __name__ == "__main__":
98
+ raise SystemExit(main())
@@ -0,0 +1,118 @@
1
+ #!/usr/bin/env python3
2
+ """Validate the command-page heading template (EN/JA).
3
+
4
+ EN canonical template: a one-paragraph intro (the "when to use" guidance is
5
+ folded into the opening sentence — no separate heading), then ``## Examples``
6
+ before the ``## Workflow`` body, and none of the legacy ``When to use`` /
7
+ ``Quick examples`` / ``Inputs`` headings.
8
+
9
+ JA pages follow the same canonical template (## 実行例 before ## 処理の流れ,
10
+ with the legacy 使いどころ / 入力 headings removed).
11
+ """
12
+
13
+ from __future__ import annotations
14
+
15
+ from pathlib import Path
16
+
17
+
18
+ REPO_ROOT = Path(__file__).resolve().parents[2]
19
+ DOCS_ROOT = REPO_ROOT / "docs"
20
+
21
+ TARGETS = (
22
+ "all",
23
+ "scan",
24
+ "scan2d",
25
+ "scan3d",
26
+ "tsopt",
27
+ "freq",
28
+ "opt",
29
+ "path-opt",
30
+ "path-search",
31
+ "irc",
32
+ "dft",
33
+ )
34
+
35
+ # EN canonical template.
36
+ EN_REQUIRED = ("## Examples",)
37
+ EN_BODY = "## Workflow"
38
+ EN_FORBIDDEN = (
39
+ "## When to use",
40
+ "## Quick examples",
41
+ "## Common examples",
42
+ "## Minimal example",
43
+ "## Usage",
44
+ "## Inputs",
45
+ )
46
+
47
+ # JA canonical template (mirrors the EN template).
48
+ JA_REQUIRED = ("## 実行例",)
49
+ JA_BODY = "## 処理の流れ"
50
+ JA_FORBIDDEN = (
51
+ "## 使いどころ",
52
+ "## クイック例",
53
+ "## 使用例",
54
+ "## 例",
55
+ "## 最小例",
56
+ "## 入力",
57
+ )
58
+
59
+
60
+ def _heading_positions(path: Path) -> dict[str, int]:
61
+ positions: dict[str, int] = {}
62
+ for i, line in enumerate(path.read_text(encoding="utf-8").splitlines(), start=1):
63
+ if line.startswith("## "):
64
+ positions.setdefault(line.strip(), i)
65
+ return positions
66
+
67
+
68
+ def _check(
69
+ path: Path,
70
+ required: tuple[str, ...],
71
+ body_heading: str,
72
+ forbidden: tuple[str, ...],
73
+ errors: list[str],
74
+ ) -> None:
75
+ if not path.exists():
76
+ errors.append(f"{path}: missing file")
77
+ return
78
+
79
+ positions = _heading_positions(path)
80
+
81
+ missing = [h for h in required if h not in positions]
82
+ if missing:
83
+ errors.append(f"{path}: missing headings: {', '.join(missing)}")
84
+
85
+ present_forbidden = [h for h in forbidden if h in positions]
86
+ if present_forbidden:
87
+ errors.append(
88
+ f"{path}: legacy headings must be removed: {', '.join(present_forbidden)}"
89
+ )
90
+
91
+ body_line = positions.get(body_heading)
92
+ if body_line is not None:
93
+ late = [h for h in required if h in positions and positions[h] > body_line]
94
+ if late:
95
+ errors.append(
96
+ f"{path}: heading(s) must precede '{body_heading}': {', '.join(late)}"
97
+ )
98
+
99
+
100
+ def main() -> int:
101
+ errors: list[str] = []
102
+
103
+ for name in TARGETS:
104
+ _check(DOCS_ROOT / f"{name}.md", EN_REQUIRED, EN_BODY, EN_FORBIDDEN, errors)
105
+ _check(DOCS_ROOT / "ja" / f"{name}.md", JA_REQUIRED, JA_BODY, JA_FORBIDDEN, errors)
106
+
107
+ if errors:
108
+ print("[intro-check] failed:")
109
+ for e in errors:
110
+ print(f"- {e}")
111
+ return 1
112
+
113
+ print(f"[intro-check] validated {len(TARGETS) * 2} pages.")
114
+ return 0
115
+
116
+
117
+ if __name__ == "__main__":
118
+ raise SystemExit(main())
@@ -0,0 +1,122 @@
1
+ #!/usr/bin/env python3
2
+ """Validate local markdown links under docs/."""
3
+
4
+ from __future__ import annotations
5
+
6
+ import re
7
+ from pathlib import Path
8
+
9
+
10
+ REPO_ROOT = Path(__file__).resolve().parents[2]
11
+ DOCS_ROOT = REPO_ROOT / "docs"
12
+ LINK_RE = re.compile(r"(?<!\!)\[[^\]]+\]\(([^)]+)\)")
13
+ EXTERNAL_PREFIXES = ("http://", "https://", "mailto:", "tel:")
14
+
15
+
16
+ def _normalize_target(raw: str) -> str:
17
+ target = raw.strip()
18
+ if target.startswith("<") and target.endswith(">"):
19
+ target = target[1:-1].strip()
20
+ if " " in target:
21
+ target = target.split(" ", 1)[0]
22
+ return target
23
+
24
+
25
+ def _iter_links(path: Path) -> list[tuple[int, str]]:
26
+ links: list[tuple[int, str]] = []
27
+ in_fence = False
28
+ for lineno, line in enumerate(path.read_text(encoding="utf-8").splitlines(), start=1):
29
+ stripped = line.strip()
30
+ if stripped.startswith("```"):
31
+ in_fence = not in_fence
32
+ continue
33
+ if in_fence:
34
+ continue
35
+ for match in LINK_RE.finditer(line):
36
+ links.append((lineno, _normalize_target(match.group(1))))
37
+ return links
38
+
39
+
40
+ def _iter_toctree_targets(path: Path) -> list[tuple[int, str]]:
41
+ targets: list[tuple[int, str]] = []
42
+ in_toctree = False
43
+ for lineno, line in enumerate(path.read_text(encoding="utf-8").splitlines(), start=1):
44
+ stripped = line.strip()
45
+ if stripped.startswith("```"):
46
+ marker = stripped[3:].strip().lower()
47
+ if not in_toctree and marker.startswith("{toctree}"):
48
+ in_toctree = True
49
+ continue
50
+ if in_toctree:
51
+ in_toctree = False
52
+ continue
53
+ if not in_toctree:
54
+ continue
55
+ if not stripped or stripped.startswith(":"):
56
+ continue
57
+ # Handle MyST toctree "Title <target>" syntax
58
+ angle = re.match(r".*<([^>]+)>\s*$", stripped)
59
+ if angle:
60
+ targets.append((lineno, angle.group(1).strip()))
61
+ else:
62
+ targets.append((lineno, stripped.split()[0]))
63
+ return targets
64
+
65
+
66
+ def _resolve_doc_target(path: Path, target: str) -> Path | None:
67
+ if not target or target.startswith(EXTERNAL_PREFIXES) or target.startswith("#"):
68
+ return None
69
+ if "*" in target:
70
+ return None
71
+ base = (path.parent / target).resolve()
72
+ if base.suffix:
73
+ return base
74
+ for candidate in (base.with_suffix(".md"), base.with_suffix(".rst"), base):
75
+ if candidate.exists():
76
+ return candidate
77
+ return base.with_suffix(".md")
78
+
79
+
80
+ def _check_path(path: Path, errors: list[str]) -> None:
81
+ for lineno, target in _iter_links(path):
82
+ if not target or target.startswith(EXTERNAL_PREFIXES):
83
+ continue
84
+ if target.startswith("#"):
85
+ continue
86
+ target_path = target.split("#", 1)[0]
87
+ if not target_path:
88
+ continue
89
+ resolved = (path.parent / target_path).resolve()
90
+ if not resolved.exists():
91
+ errors.append(
92
+ f"{path.relative_to(REPO_ROOT)}:{lineno}: broken local link -> {target}"
93
+ )
94
+
95
+ for lineno, target in _iter_toctree_targets(path):
96
+ resolved = _resolve_doc_target(path, target)
97
+ if resolved is None:
98
+ continue
99
+ if not resolved.exists():
100
+ errors.append(
101
+ f"{path.relative_to(REPO_ROOT)}:{lineno}: broken toctree target -> {target}"
102
+ )
103
+
104
+
105
+ def main() -> int:
106
+ errors: list[str] = []
107
+ pages = sorted(DOCS_ROOT.rglob("*.md"))
108
+ for md in pages:
109
+ _check_path(md, errors)
110
+
111
+ if errors:
112
+ print("[link-check] failed:")
113
+ for e in errors:
114
+ print(f"- {e}")
115
+ return 1
116
+
117
+ print(f"[link-check] validated local links in {len(pages)} pages.")
118
+ return 0
119
+
120
+
121
+ if __name__ == "__main__":
122
+ raise SystemExit(main())
@@ -0,0 +1,140 @@
1
+ #!/usr/bin/env python3
2
+ """Audit fenced ``bash`` blocks in skills/**/*.md.
3
+
4
+ For every line that starts with ``mlmm <subcommand>``, parse out flag
5
+ tokens (``--foo`` and ``-f``) and verify each one is registered on that
6
+ subcommand via Click introspection. Stale flags from past edits are
7
+ reported with file:line.
8
+
9
+ This is intentionally conservative:
10
+ * shell line continuations (\\) are joined.
11
+ * placeholders / templates (``<arg>``, ``{xyz,pdb,gjf}``) are skipped.
12
+ * values for known boolean flags (``--tsopt true``, ``--no-tsopt``) are
13
+ accepted as flag-only.
14
+ * free-form prose example fragments inside backticks (single-line
15
+ ``mlmm extract --foo``) are also checked.
16
+
17
+ Exits non-zero on any unknown flag.
18
+ """
19
+
20
+ from __future__ import annotations
21
+
22
+ import re
23
+ import shlex
24
+ import sys
25
+ from pathlib import Path
26
+
27
+ import click
28
+
29
+ REPO_ROOT = Path(__file__).resolve().parents[2]
30
+ SKILLS_DIR = REPO_ROOT / "skills"
31
+
32
+ sys.path.insert(0, str(REPO_ROOT))
33
+ from mlmm.cli import cli as root_cli # noqa: E402
34
+
35
+
36
+ def _collect_subcommand_flags() -> dict[str, set[str]]:
37
+ flags_per_cmd: dict[str, set[str]] = {}
38
+ ctx = click.Context(root_cli)
39
+ for name in root_cli.list_commands(ctx):
40
+ cmd = root_cli.get_command(ctx, name)
41
+ if cmd is None:
42
+ continue
43
+ flags: set[str] = set()
44
+ for p in cmd.params:
45
+ for opt in getattr(p, "opts", []) or []:
46
+ flags.add(opt)
47
+ for opt in getattr(p, "secondary_opts", []) or []:
48
+ flags.add(opt)
49
+ # universal flags every subcommand inherits in our setup
50
+ flags.update({"--help", "--help-advanced"})
51
+ flags_per_cmd[name] = flags
52
+ return flags_per_cmd
53
+
54
+
55
+ _FENCE_RE = re.compile(r"^```(?:bash|console|sh)?\s*$")
56
+ _FENCE_END_RE = re.compile(r"^```\s*$")
57
+ _INLINE_RE = re.compile(r"`(mlmm\s+[^`]+)`")
58
+ _FLAG_RE = re.compile(r"^-{1,2}[A-Za-z][\w-]*$")
59
+
60
+
61
+ def _iter_command_lines(text: str):
62
+ in_fence = False
63
+ pending: list[str] = []
64
+ pending_lineno = 0
65
+ for lineno, line in enumerate(text.splitlines(), start=1):
66
+ if not in_fence and _FENCE_RE.match(line):
67
+ in_fence = True
68
+ continue
69
+ if in_fence and _FENCE_END_RE.match(line):
70
+ in_fence = False
71
+ if pending and "mlmm" in " ".join(pending):
72
+ yield pending_lineno, " ".join(pending)
73
+ pending = []
74
+ continue
75
+ if in_fence:
76
+ stripped = line.rstrip()
77
+ if stripped.endswith("\\"):
78
+ if not pending:
79
+ pending_lineno = lineno
80
+ pending.append(stripped[:-1].strip())
81
+ continue
82
+ # End of a logical command
83
+ if pending:
84
+ pending.append(stripped.strip())
85
+ if "mlmm" in " ".join(pending):
86
+ yield pending_lineno, " ".join(pending)
87
+ pending = []
88
+ else:
89
+ # standalone single-line command
90
+ if "mlmm" in stripped:
91
+ yield lineno, stripped.strip()
92
+ continue
93
+ for m in _INLINE_RE.finditer(line):
94
+ yield lineno, m.group(1)
95
+
96
+
97
+ def _check_command(cmd_text: str, flags_per_cmd: dict[str, set[str]]):
98
+ try:
99
+ tokens = shlex.split(cmd_text, posix=True)
100
+ except ValueError:
101
+ return []
102
+ if len(tokens) < 2 or tokens[0] != "mlmm":
103
+ return []
104
+ sub = tokens[1]
105
+ if sub not in flags_per_cmd:
106
+ return []
107
+ valid = flags_per_cmd[sub]
108
+ bad: list[str] = []
109
+ for tok in tokens[2:]:
110
+ if tok.startswith("<") or tok.startswith("{") or tok.startswith("["):
111
+ continue
112
+ if not tok.startswith("-"):
113
+ continue
114
+ # split --foo=bar
115
+ flag = tok.split("=", 1)[0]
116
+ if not _FLAG_RE.match(flag):
117
+ continue
118
+ if flag not in valid:
119
+ bad.append(flag)
120
+ return bad
121
+
122
+
123
+ def main() -> int:
124
+ flags_per_cmd = _collect_subcommand_flags()
125
+ n_files = 0
126
+ n_errors = 0
127
+ for path in sorted(SKILLS_DIR.rglob("*.md")):
128
+ text = path.read_text()
129
+ for lineno, cmd in _iter_command_lines(text):
130
+ bad = _check_command(cmd, flags_per_cmd)
131
+ if bad:
132
+ n_errors += 1
133
+ print(f"{path.relative_to(REPO_ROOT)}:{lineno}: unknown flag(s) {bad} in: {cmd[:120]}")
134
+ n_files += 1
135
+ print(f"\nChecked {n_files} skill files; {n_errors} stale flag occurrences.")
136
+ return 1 if n_errors else 0
137
+
138
+
139
+ if __name__ == "__main__":
140
+ raise SystemExit(main())