caddforge-docs 0.3.0__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 (152) hide show
  1. caddforge_docs/__init__.py +1 -0
  2. caddforge_docs/cli.py +20 -0
  3. caddforge_docs/server.py +124 -0
  4. caddforge_docs/site/404.html +2118 -0
  5. caddforge_docs/site/assets/_mkdocstrings.css +237 -0
  6. caddforge_docs/site/assets/images/favicon.png +0 -0
  7. caddforge_docs/site/assets/javascripts/bundle.d7400e89.min.js +16 -0
  8. caddforge_docs/site/assets/javascripts/bundle.d7400e89.min.js.map +7 -0
  9. caddforge_docs/site/assets/javascripts/workers/search.2c215733.min.js +42 -0
  10. caddforge_docs/site/assets/javascripts/workers/search.2c215733.min.js.map +7 -0
  11. caddforge_docs/site/assets/licenses/W3C-Software-and-Document-2015.txt +15 -0
  12. caddforge_docs/site/assets/licenses/autogrid-COPYING-GPL-2.txt +339 -0
  13. caddforge_docs/site/assets/licenses/autogrid-GCC-RUNTIME-COPYING-GPL-3.txt +674 -0
  14. caddforge_docs/site/assets/licenses/autogrid-GCC-RUNTIME-EXCEPTION.txt +73 -0
  15. caddforge_docs/site/assets/licenses/autogrid-GCC-RUNTIME-NOTICE.txt +24 -0
  16. caddforge_docs/site/assets/licenses/caddforge-opencosmors-COPYING.txt +674 -0
  17. caddforge_docs/site/assets/licenses/caddforge-opencosmors-LICENSE.txt +165 -0
  18. caddforge_docs/site/assets/licenses/caddforge-unidock-tools-LICENSE.txt +202 -0
  19. caddforge_docs/site/assets/licenses/clipboard-LICENSE.txt +19 -0
  20. caddforge_docs/site/assets/licenses/escape-html-LICENSE.txt +2 -0
  21. caddforge_docs/site/assets/licenses/focus-visible-LICENSE.txt +4 -0
  22. caddforge_docs/site/assets/licenses/fontawesome-LICENSE.txt +165 -0
  23. caddforge_docs/site/assets/licenses/fuzzaldrin-plus-LICENSE.txt +21 -0
  24. caddforge_docs/site/assets/licenses/lunr-LICENSE.txt +17 -0
  25. caddforge_docs/site/assets/licenses/material-LICENSE.txt +20 -0
  26. caddforge_docs/site/assets/licenses/material-design-color-LICENSE.txt +31 -0
  27. caddforge_docs/site/assets/licenses/material-shadows-LICENSE.txt +31 -0
  28. caddforge_docs/site/assets/licenses/mkdocs-material-LICENSE.txt +19 -0
  29. caddforge_docs/site/assets/licenses/mkdocs-material-extensions-LICENSE.txt +21 -0
  30. caddforge_docs/site/assets/licenses/mkdocs-section-index-LICENSE.txt +21 -0
  31. caddforge_docs/site/assets/licenses/mkdocstrings-LICENSE.txt +15 -0
  32. caddforge_docs/site/assets/licenses/mkdocstrings-python-LICENSE.txt +15 -0
  33. caddforge_docs/site/assets/licenses/octicons-LICENSE.txt +21 -0
  34. caddforge_docs/site/assets/licenses/preact-LICENSE.txt +19 -0
  35. caddforge_docs/site/assets/licenses/properdocs-LICENSE.txt +26 -0
  36. caddforge_docs/site/assets/licenses/pymdown-extensions-LICENSE.txt +113 -0
  37. caddforge_docs/site/assets/licenses/rxjs-LICENSE.txt +180 -0
  38. caddforge_docs/site/assets/licenses/simple-LICENSE.txt +30 -0
  39. caddforge_docs/site/assets/licenses/tiny-emitter-LICENSE.txt +19 -0
  40. caddforge_docs/site/assets/licenses/tslib-LICENSE.txt +12 -0
  41. caddforge_docs/site/assets/licenses/zeno-rocha-components-LICENSE.txt +22 -0
  42. caddforge_docs/site/assets/stylesheets/main.ec1eaa64.min.css +1 -0
  43. caddforge_docs/site/assets/stylesheets/main.ec1eaa64.min.css.map +1 -0
  44. caddforge_docs/site/assets/stylesheets/palette.ab4e12ef.min.css +1 -0
  45. caddforge_docs/site/assets/stylesheets/palette.ab4e12ef.min.css.map +1 -0
  46. caddforge_docs/site/core/cli/index.html +2446 -0
  47. caddforge_docs/site/core/concepts/index.html +2340 -0
  48. caddforge_docs/site/core/configuration/index.html +2300 -0
  49. caddforge_docs/site/core/index.html +2170 -0
  50. caddforge_docs/site/core/jobs-results/index.html +2315 -0
  51. caddforge_docs/site/core/plugins/index.html +2200 -0
  52. caddforge_docs/site/core/slurm/index.html +2562 -0
  53. caddforge_docs/site/development/ci-publishing/index.html +2345 -0
  54. caddforge_docs/site/development/contributing/index.html +2311 -0
  55. caddforge_docs/site/development/documentation/index.html +2380 -0
  56. caddforge_docs/site/development/index.html +2201 -0
  57. caddforge_docs/site/development/release-notes/index.html +2504 -0
  58. caddforge_docs/site/development/release-readiness/index.html +2333 -0
  59. caddforge_docs/site/development/security/index.html +2181 -0
  60. caddforge_docs/site/development/tool-authoring/index.html +2435 -0
  61. caddforge_docs/site/examples/index.html +2465 -0
  62. caddforge_docs/site/examples/manifest.json +158 -0
  63. caddforge_docs/site/examples/minimize/component_overrides.yaml +14 -0
  64. caddforge_docs/site/examples/minimize/ligand_only.yaml +13 -0
  65. caddforge_docs/site/examples/minimize/pipeline_docking.yaml +84 -0
  66. caddforge_docs/site/examples/minimize/pipeline_scatter.yaml +49 -0
  67. caddforge_docs/site/examples/minimize/pocket_free_shell_restrained.yaml +13 -0
  68. caddforge_docs/site/examples/minimize/pocket_restrained.yaml +13 -0
  69. caddforge_docs/site/examples/minimize/prepared_metal.yaml +14 -0
  70. caddforge_docs/site/examples/minimize/sidechains_free_backbone_fixed.yaml +13 -0
  71. caddforge_docs/site/examples/minimize/sidechains_free_backbone_restrained.yaml +13 -0
  72. caddforge_docs/site/examples/pipelines/descriptor-model-and-candidate-filter.yaml +44 -0
  73. caddforge_docs/site/examples/pipelines/dock-extract-and-minimize-poses.yaml +85 -0
  74. caddforge_docs/site/examples/pipelines/docking-screen-and-rescore.yaml +55 -0
  75. caddforge_docs/site/examples/pipelines/flexible-gnina-to-openbpmd-to-md-to-abfe.yaml +189 -0
  76. caddforge_docs/site/examples/pipelines/gnina-flexible-complex-artifacts.yaml +52 -0
  77. caddforge_docs/site/examples/pipelines/minimize-a-multi-pose-sdf.yaml +46 -0
  78. caddforge_docs/site/examples/pipelines/pose-level-md-selection.yaml +95 -0
  79. caddforge_docs/site/examples/pipelines/result-collection-and-diagnostics.yaml +55 -0
  80. caddforge_docs/site/examples/quickstart/diagnostics.yaml +8 -0
  81. caddforge_docs/site/examples/quickstart/index.html +2172 -0
  82. caddforge_docs/site/examples/quickstart/pipeline.yaml +23 -0
  83. caddforge_docs/site/examples/quickstart/run.py +18 -0
  84. caddforge_docs/site/examples/quickstart/run_pipeline.py +6 -0
  85. caddforge_docs/site/examples/quickstart/scores.csv +7 -0
  86. caddforge_docs/site/examples/quickstart/values.csv +31 -0
  87. caddforge_docs/site/examples/run_tool.py +40 -0
  88. caddforge_docs/site/examples/tools/datascience-csv-scatter.yaml +17 -0
  89. caddforge_docs/site/examples/tools/datascience-distribution-diagnostics.yaml +10 -0
  90. caddforge_docs/site/examples/tools/descriptors-ani-conformers.yaml +9 -0
  91. caddforge_docs/site/examples/tools/descriptors-ani-psa.yaml +9 -0
  92. caddforge_docs/site/examples/tools/descriptors-cluster-molecules.yaml +11 -0
  93. caddforge_docs/site/examples/tools/descriptors-phesa.yaml +7 -0
  94. caddforge_docs/site/examples/tools/docking-gnina.yaml +12 -0
  95. caddforge_docs/site/examples/tools/docking-idockya.yaml +8 -0
  96. caddforge_docs/site/examples/tools/docking-unidock.yaml +12 -0
  97. caddforge_docs/site/examples/tools/fep-openfe-abfe.yaml +53 -0
  98. caddforge_docs/site/examples/tools/fep-openfe-rbfe-septop.yaml +23 -0
  99. caddforge_docs/site/examples/tools/md-center-and-align.yaml +16 -0
  100. caddforge_docs/site/examples/tools/md-cluster-representative.yaml +16 -0
  101. caddforge_docs/site/examples/tools/md-extract-frames.yaml +17 -0
  102. caddforge_docs/site/examples/tools/md-fix-structure.yaml +20 -0
  103. caddforge_docs/site/examples/tools/md-grand.yaml +28 -0
  104. caddforge_docs/site/examples/tools/md-inducia.yaml +29 -0
  105. caddforge_docs/site/examples/tools/md-minimize.yaml +13 -0
  106. caddforge_docs/site/examples/tools/md-openbpmd.yaml +11 -0
  107. caddforge_docs/site/examples/tools/md-plain-md.yaml +28 -0
  108. caddforge_docs/site/examples/tools/ml-explore-classifier.yaml +5 -0
  109. caddforge_docs/site/examples/tools/ml-model-factory.yaml +32 -0
  110. caddforge_docs/site/examples/tools/ml-model-zoo.yaml +16 -0
  111. caddforge_docs/site/examples/tools/ml-pca.yaml +10 -0
  112. caddforge_docs/site/examples/tools/ml-simple-gp.yaml +17 -0
  113. caddforge_docs/site/examples/tools/qm-transfer-free-energy.yaml +11 -0
  114. caddforge_docs/site/explanation/references/index.html +2218 -0
  115. caddforge_docs/site/explanation/reproducibility/index.html +2306 -0
  116. caddforge_docs/site/explanation/third-party-notices/index.html +2599 -0
  117. caddforge_docs/site/getting-started/first-pipeline/index.html +2195 -0
  118. caddforge_docs/site/getting-started/first-workflow/index.html +2329 -0
  119. caddforge_docs/site/getting-started/index.html +2200 -0
  120. caddforge_docs/site/getting-started/installation/index.html +2541 -0
  121. caddforge_docs/site/gui/index.html +2267 -0
  122. caddforge_docs/site/gui/plugin-authoring/index.html +2280 -0
  123. caddforge_docs/site/gui/walkthrough/index.html +2181 -0
  124. caddforge_docs/site/how-to/jobs/index.html +2195 -0
  125. caddforge_docs/site/how-to/scatter/index.html +2193 -0
  126. caddforge_docs/site/how-to/troubleshooting/index.html +2429 -0
  127. caddforge_docs/site/index.html +2359 -0
  128. caddforge_docs/site/objects.inv +0 -0
  129. caddforge_docs/site/pipelines/artifacts/index.html +2314 -0
  130. caddforge_docs/site/pipelines/built-ins/index.html +2670 -0
  131. caddforge_docs/site/pipelines/examples/index.html +3186 -0
  132. caddforge_docs/site/pipelines/index.html +2164 -0
  133. caddforge_docs/site/pipelines/specification/index.html +2278 -0
  134. caddforge_docs/site/plugins/datascience/index.html +2405 -0
  135. caddforge_docs/site/plugins/descriptors/index.html +2609 -0
  136. caddforge_docs/site/plugins/docking/index.html +2480 -0
  137. caddforge_docs/site/plugins/fep/index.html +2508 -0
  138. caddforge_docs/site/plugins/index.html +2216 -0
  139. caddforge_docs/site/plugins/md/index.html +3795 -0
  140. caddforge_docs/site/plugins/ml/index.html +2815 -0
  141. caddforge_docs/site/plugins/qm/index.html +2309 -0
  142. caddforge_docs/site/plugins/version-matrix/index.html +2449 -0
  143. caddforge_docs/site/reference/api/index.html +4414 -0
  144. caddforge_docs/site/reference/index.html +2166 -0
  145. caddforge_docs/site/search/search_index.json +1 -0
  146. caddforge_docs/site/sitemap.xml +191 -0
  147. caddforge_docs/site/sitemap.xml.gz +0 -0
  148. caddforge_docs-0.3.0.dist-info/METADATA +158 -0
  149. caddforge_docs-0.3.0.dist-info/RECORD +152 -0
  150. caddforge_docs-0.3.0.dist-info/WHEEL +4 -0
  151. caddforge_docs-0.3.0.dist-info/entry_points.txt +2 -0
  152. caddforge_docs-0.3.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,2345 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en" class="no-js">
4
+ <head>
5
+
6
+ <meta charset="utf-8">
7
+ <meta name="viewport" content="width=device-width,initial-scale=1">
8
+
9
+ <meta name="description" content="Central documentation for the CADDForge CADD toolbox framework.">
10
+
11
+
12
+
13
+ <link rel="canonical" href="https://idorsia.github.io/caddforge-docs/development/ci-publishing/">
14
+
15
+
16
+ <link rel="prev" href="../release-readiness/">
17
+
18
+
19
+
20
+
21
+
22
+
23
+ <link rel="icon" href="../../assets/images/favicon.png">
24
+ <meta name="generator" content="mkdocs-ProperDocs 1.6.7, mkdocs-material-9.7.7">
25
+
26
+
27
+
28
+ <title>CI and Publishing - CADDForge</title>
29
+
30
+
31
+
32
+ <link rel="stylesheet" href="../../assets/stylesheets/main.ec1eaa64.min.css">
33
+
34
+
35
+ <link rel="stylesheet" href="../../assets/stylesheets/palette.ab4e12ef.min.css">
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+ <link rel="stylesheet" href="../../assets/_mkdocstrings.css">
49
+
50
+ <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
51
+
52
+
53
+
54
+
55
+
56
+ </head>
57
+
58
+
59
+
60
+
61
+
62
+
63
+
64
+
65
+
66
+ <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="blue" data-md-color-accent="teal">
67
+
68
+
69
+ <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
70
+ <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
71
+ <label class="md-overlay" for="__drawer"></label>
72
+ <div data-md-component="skip">
73
+
74
+
75
+ <a href="#ci-and-publishing" class="md-skip">
76
+ Skip to content
77
+ </a>
78
+
79
+ </div>
80
+ <div data-md-component="announce">
81
+
82
+ </div>
83
+
84
+
85
+
86
+
87
+
88
+
89
+ <header class="md-header md-header--shadow" data-md-component="header">
90
+ <nav class="md-header__inner md-grid" aria-label="Header">
91
+ <a href="../.." title="CADDForge" class="md-header__button md-logo" aria-label="CADDForge" data-md-component="logo">
92
+
93
+
94
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
95
+
96
+ </a>
97
+ <label class="md-header__button md-icon" for="__drawer">
98
+
99
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
100
+ </label>
101
+ <div class="md-header__title" data-md-component="header-title">
102
+ <div class="md-header__ellipsis">
103
+ <div class="md-header__topic">
104
+ <span class="md-ellipsis">
105
+ CADDForge
106
+ </span>
107
+ </div>
108
+ <div class="md-header__topic" data-md-component="header-topic">
109
+ <span class="md-ellipsis">
110
+
111
+ CI and Publishing
112
+
113
+ </span>
114
+ </div>
115
+ </div>
116
+ </div>
117
+
118
+
119
+ <form class="md-header__option" data-md-component="palette">
120
+
121
+
122
+
123
+
124
+ <input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="blue" data-md-color-accent="teal" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_0">
125
+
126
+ <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden>
127
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3zm3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95zm-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31"/></svg>
128
+ </label>
129
+
130
+
131
+
132
+
133
+
134
+ <input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="blue" data-md-color-accent="teal" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_1">
135
+
136
+ <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden>
137
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5s-1.65.15-2.39.42zM3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29zm.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14zM20.65 7l-1.77 3.79a7.02 7.02 0 0 0-2.38-4.15zm-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29zM12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44z"/></svg>
138
+ </label>
139
+
140
+
141
+ </form>
142
+
143
+
144
+
145
+ <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
146
+
147
+
148
+
149
+
150
+
151
+ <label class="md-header__button md-icon" for="__search">
152
+
153
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
154
+ </label>
155
+ <div class="md-search" data-md-component="search" role="dialog">
156
+ <label class="md-search__overlay" for="__search"></label>
157
+ <div class="md-search__inner" role="search">
158
+ <form class="md-search__form" name="search">
159
+ <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
160
+ <label class="md-search__icon md-icon" for="__search">
161
+
162
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
163
+
164
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
165
+ </label>
166
+ <nav class="md-search__options" aria-label="Search">
167
+
168
+ <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
169
+
170
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
171
+ </button>
172
+ </nav>
173
+
174
+ <div class="md-search__suggest" data-md-component="search-suggest"></div>
175
+
176
+ </form>
177
+ <div class="md-search__output">
178
+ <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
179
+ <div class="md-search-result" data-md-component="search-result">
180
+ <div class="md-search-result__meta">
181
+ Initializing search
182
+ </div>
183
+ <ol class="md-search-result__list" role="presentation"></ol>
184
+ </div>
185
+ </div>
186
+ </div>
187
+ </div>
188
+ </div>
189
+
190
+
191
+
192
+ <div class="md-header__source">
193
+ <a href="https://github.com/idorsia/caddforge-docs" title="Go to repository" class="md-source" data-md-component="source">
194
+ <div class="md-source__icon md-icon">
195
+
196
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
197
+ </div>
198
+ <div class="md-source__repository">
199
+ caddforge-docs
200
+ </div>
201
+ </a>
202
+ </div>
203
+
204
+ </nav>
205
+
206
+ </header>
207
+
208
+ <div class="md-container" data-md-component="container">
209
+
210
+
211
+
212
+
213
+
214
+
215
+ <main class="md-main" data-md-component="main">
216
+ <div class="md-main__inner md-grid">
217
+
218
+
219
+
220
+ <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
221
+ <div class="md-sidebar__scrollwrap">
222
+ <div class="md-sidebar__inner">
223
+
224
+
225
+
226
+
227
+ <nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
228
+ <label class="md-nav__title" for="__drawer">
229
+ <a href="../.." title="CADDForge" class="md-nav__button md-logo" aria-label="CADDForge" data-md-component="logo">
230
+
231
+
232
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
233
+
234
+ </a>
235
+ CADDForge
236
+ </label>
237
+
238
+ <div class="md-nav__source">
239
+ <a href="https://github.com/idorsia/caddforge-docs" title="Go to repository" class="md-source" data-md-component="source">
240
+ <div class="md-source__icon md-icon">
241
+
242
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
243
+ </div>
244
+ <div class="md-source__repository">
245
+ caddforge-docs
246
+ </div>
247
+ </a>
248
+ </div>
249
+
250
+ <ul class="md-nav__list" data-md-scrollfix>
251
+
252
+
253
+
254
+
255
+
256
+
257
+
258
+ <li class="md-nav__item">
259
+ <a href="../.." class="md-nav__link">
260
+
261
+
262
+
263
+ <span class="md-ellipsis">
264
+
265
+
266
+ Home
267
+
268
+
269
+
270
+ </span>
271
+
272
+
273
+
274
+ </a>
275
+ </li>
276
+
277
+
278
+
279
+
280
+
281
+
282
+
283
+
284
+
285
+
286
+
287
+
288
+
289
+
290
+
291
+
292
+
293
+
294
+
295
+
296
+
297
+
298
+
299
+
300
+
301
+
302
+
303
+ <li class="md-nav__item md-nav__item--section md-nav__item--nested">
304
+
305
+
306
+
307
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" >
308
+
309
+
310
+ <div class="md-nav__link md-nav__container">
311
+ <a href="../../getting-started/" class="md-nav__link ">
312
+
313
+
314
+
315
+ <span class="md-ellipsis">
316
+
317
+
318
+ Getting Started
319
+
320
+
321
+
322
+ </span>
323
+
324
+
325
+
326
+ </a>
327
+
328
+
329
+ <label class="md-nav__link " for="__nav_2" id="__nav_2_label" tabindex="">
330
+ <span class="md-nav__icon md-icon"></span>
331
+ </label>
332
+
333
+ </div>
334
+
335
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
336
+ <label class="md-nav__title" for="__nav_2">
337
+ <span class="md-nav__icon md-icon"></span>
338
+
339
+
340
+ Getting Started
341
+
342
+
343
+ </label>
344
+ <ul class="md-nav__list" data-md-scrollfix>
345
+
346
+
347
+
348
+
349
+
350
+
351
+
352
+ <li class="md-nav__item">
353
+ <a href="../../getting-started/installation/" class="md-nav__link">
354
+
355
+
356
+
357
+ <span class="md-ellipsis">
358
+
359
+
360
+ Installation
361
+
362
+
363
+
364
+ </span>
365
+
366
+
367
+
368
+ </a>
369
+ </li>
370
+
371
+
372
+
373
+
374
+
375
+
376
+
377
+
378
+
379
+
380
+ <li class="md-nav__item">
381
+ <a href="../../getting-started/first-workflow/" class="md-nav__link">
382
+
383
+
384
+
385
+ <span class="md-ellipsis">
386
+
387
+
388
+ First Workflow
389
+
390
+
391
+
392
+ </span>
393
+
394
+
395
+
396
+ </a>
397
+ </li>
398
+
399
+
400
+
401
+
402
+
403
+
404
+
405
+
406
+
407
+
408
+ <li class="md-nav__item">
409
+ <a href="../../getting-started/first-pipeline/" class="md-nav__link">
410
+
411
+
412
+
413
+ <span class="md-ellipsis">
414
+
415
+
416
+ First Pipeline
417
+
418
+
419
+
420
+ </span>
421
+
422
+
423
+
424
+ </a>
425
+ </li>
426
+
427
+
428
+
429
+
430
+ </ul>
431
+ </nav>
432
+
433
+ </li>
434
+
435
+
436
+
437
+
438
+
439
+
440
+
441
+
442
+
443
+
444
+
445
+
446
+
447
+
448
+
449
+
450
+
451
+
452
+
453
+
454
+
455
+
456
+
457
+
458
+
459
+
460
+
461
+ <li class="md-nav__item md-nav__item--section md-nav__item--nested">
462
+
463
+
464
+
465
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
466
+
467
+
468
+ <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="">
469
+
470
+
471
+
472
+ <span class="md-ellipsis">
473
+
474
+
475
+ How-to Guides
476
+
477
+
478
+
479
+ </span>
480
+
481
+
482
+
483
+ <span class="md-nav__icon md-icon"></span>
484
+ </label>
485
+
486
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
487
+ <label class="md-nav__title" for="__nav_3">
488
+ <span class="md-nav__icon md-icon"></span>
489
+
490
+
491
+ How-to Guides
492
+
493
+
494
+ </label>
495
+ <ul class="md-nav__list" data-md-scrollfix>
496
+
497
+
498
+
499
+
500
+
501
+
502
+
503
+ <li class="md-nav__item">
504
+ <a href="../../how-to/jobs/" class="md-nav__link">
505
+
506
+
507
+
508
+ <span class="md-ellipsis">
509
+
510
+
511
+ Jobs and Results
512
+
513
+
514
+
515
+ </span>
516
+
517
+
518
+
519
+ </a>
520
+ </li>
521
+
522
+
523
+
524
+
525
+
526
+
527
+
528
+
529
+
530
+
531
+ <li class="md-nav__item">
532
+ <a href="../../how-to/scatter/" class="md-nav__link">
533
+
534
+
535
+
536
+ <span class="md-ellipsis">
537
+
538
+
539
+ Scatter and Reduce
540
+
541
+
542
+
543
+ </span>
544
+
545
+
546
+
547
+ </a>
548
+ </li>
549
+
550
+
551
+
552
+
553
+
554
+
555
+
556
+
557
+
558
+
559
+ <li class="md-nav__item">
560
+ <a href="../../how-to/troubleshooting/" class="md-nav__link">
561
+
562
+
563
+
564
+ <span class="md-ellipsis">
565
+
566
+
567
+ Troubleshooting
568
+
569
+
570
+
571
+ </span>
572
+
573
+
574
+
575
+ </a>
576
+ </li>
577
+
578
+
579
+
580
+
581
+ </ul>
582
+ </nav>
583
+
584
+ </li>
585
+
586
+
587
+
588
+
589
+
590
+
591
+
592
+
593
+
594
+
595
+
596
+
597
+
598
+
599
+
600
+
601
+
602
+
603
+
604
+
605
+
606
+
607
+
608
+
609
+
610
+
611
+
612
+
613
+
614
+
615
+
616
+
617
+
618
+ <li class="md-nav__item md-nav__item--section md-nav__item--nested">
619
+
620
+
621
+
622
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
623
+
624
+
625
+ <div class="md-nav__link md-nav__container">
626
+ <a href="../../core/" class="md-nav__link ">
627
+
628
+
629
+
630
+ <span class="md-ellipsis">
631
+
632
+
633
+ Core
634
+
635
+
636
+
637
+ </span>
638
+
639
+
640
+
641
+ </a>
642
+
643
+
644
+ <label class="md-nav__link " for="__nav_4" id="__nav_4_label" tabindex="">
645
+ <span class="md-nav__icon md-icon"></span>
646
+ </label>
647
+
648
+ </div>
649
+
650
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
651
+ <label class="md-nav__title" for="__nav_4">
652
+ <span class="md-nav__icon md-icon"></span>
653
+
654
+
655
+ Core
656
+
657
+
658
+ </label>
659
+ <ul class="md-nav__list" data-md-scrollfix>
660
+
661
+
662
+
663
+
664
+
665
+
666
+
667
+ <li class="md-nav__item">
668
+ <a href="../../core/concepts/" class="md-nav__link">
669
+
670
+
671
+
672
+ <span class="md-ellipsis">
673
+
674
+
675
+ Concepts
676
+
677
+
678
+
679
+ </span>
680
+
681
+
682
+
683
+ </a>
684
+ </li>
685
+
686
+
687
+
688
+
689
+
690
+
691
+
692
+
693
+
694
+
695
+ <li class="md-nav__item">
696
+ <a href="../../core/configuration/" class="md-nav__link">
697
+
698
+
699
+
700
+ <span class="md-ellipsis">
701
+
702
+
703
+ Configuration
704
+
705
+
706
+
707
+ </span>
708
+
709
+
710
+
711
+ </a>
712
+ </li>
713
+
714
+
715
+
716
+
717
+
718
+
719
+
720
+
721
+
722
+
723
+ <li class="md-nav__item">
724
+ <a href="../../core/cli/" class="md-nav__link">
725
+
726
+
727
+
728
+ <span class="md-ellipsis">
729
+
730
+
731
+ CLI
732
+
733
+
734
+
735
+ </span>
736
+
737
+
738
+
739
+ </a>
740
+ </li>
741
+
742
+
743
+
744
+
745
+
746
+
747
+
748
+
749
+
750
+
751
+ <li class="md-nav__item">
752
+ <a href="../../core/jobs-results/" class="md-nav__link">
753
+
754
+
755
+
756
+ <span class="md-ellipsis">
757
+
758
+
759
+ Jobs and Results
760
+
761
+
762
+
763
+ </span>
764
+
765
+
766
+
767
+ </a>
768
+ </li>
769
+
770
+
771
+
772
+
773
+
774
+
775
+
776
+
777
+
778
+
779
+ <li class="md-nav__item">
780
+ <a href="../../core/slurm/" class="md-nav__link">
781
+
782
+
783
+
784
+ <span class="md-ellipsis">
785
+
786
+
787
+ Slurm Backend
788
+
789
+
790
+
791
+ </span>
792
+
793
+
794
+
795
+ </a>
796
+ </li>
797
+
798
+
799
+
800
+
801
+
802
+
803
+
804
+
805
+
806
+
807
+ <li class="md-nav__item">
808
+ <a href="../../core/plugins/" class="md-nav__link">
809
+
810
+
811
+
812
+ <span class="md-ellipsis">
813
+
814
+
815
+ Plugins
816
+
817
+
818
+
819
+ </span>
820
+
821
+
822
+
823
+ </a>
824
+ </li>
825
+
826
+
827
+
828
+
829
+ </ul>
830
+ </nav>
831
+
832
+ </li>
833
+
834
+
835
+
836
+
837
+
838
+
839
+
840
+
841
+
842
+
843
+
844
+
845
+
846
+
847
+
848
+
849
+
850
+
851
+
852
+
853
+
854
+
855
+
856
+
857
+
858
+
859
+
860
+
861
+
862
+ <li class="md-nav__item md-nav__item--section md-nav__item--nested">
863
+
864
+
865
+
866
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
867
+
868
+
869
+ <div class="md-nav__link md-nav__container">
870
+ <a href="../../pipelines/" class="md-nav__link ">
871
+
872
+
873
+
874
+ <span class="md-ellipsis">
875
+
876
+
877
+ Pipelines
878
+
879
+
880
+
881
+ </span>
882
+
883
+
884
+
885
+ </a>
886
+
887
+
888
+ <label class="md-nav__link " for="__nav_5" id="__nav_5_label" tabindex="">
889
+ <span class="md-nav__icon md-icon"></span>
890
+ </label>
891
+
892
+ </div>
893
+
894
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
895
+ <label class="md-nav__title" for="__nav_5">
896
+ <span class="md-nav__icon md-icon"></span>
897
+
898
+
899
+ Pipelines
900
+
901
+
902
+ </label>
903
+ <ul class="md-nav__list" data-md-scrollfix>
904
+
905
+
906
+
907
+
908
+
909
+
910
+
911
+ <li class="md-nav__item">
912
+ <a href="../../pipelines/specification/" class="md-nav__link">
913
+
914
+
915
+
916
+ <span class="md-ellipsis">
917
+
918
+
919
+ Specification
920
+
921
+
922
+
923
+ </span>
924
+
925
+
926
+
927
+ </a>
928
+ </li>
929
+
930
+
931
+
932
+
933
+
934
+
935
+
936
+
937
+
938
+
939
+ <li class="md-nav__item">
940
+ <a href="../../pipelines/artifacts/" class="md-nav__link">
941
+
942
+
943
+
944
+ <span class="md-ellipsis">
945
+
946
+
947
+ Artifacts
948
+
949
+
950
+
951
+ </span>
952
+
953
+
954
+
955
+ </a>
956
+ </li>
957
+
958
+
959
+
960
+
961
+
962
+
963
+
964
+
965
+
966
+
967
+ <li class="md-nav__item">
968
+ <a href="../../pipelines/built-ins/" class="md-nav__link">
969
+
970
+
971
+
972
+ <span class="md-ellipsis">
973
+
974
+
975
+ Built-in Stages
976
+
977
+
978
+
979
+ </span>
980
+
981
+
982
+
983
+ </a>
984
+ </li>
985
+
986
+
987
+
988
+
989
+
990
+
991
+
992
+
993
+
994
+
995
+ <li class="md-nav__item">
996
+ <a href="../../pipelines/examples/" class="md-nav__link">
997
+
998
+
999
+
1000
+ <span class="md-ellipsis">
1001
+
1002
+
1003
+ Examples
1004
+
1005
+
1006
+
1007
+ </span>
1008
+
1009
+
1010
+
1011
+ </a>
1012
+ </li>
1013
+
1014
+
1015
+
1016
+
1017
+ </ul>
1018
+ </nav>
1019
+
1020
+ </li>
1021
+
1022
+
1023
+
1024
+
1025
+
1026
+
1027
+
1028
+
1029
+
1030
+
1031
+
1032
+
1033
+
1034
+
1035
+
1036
+
1037
+
1038
+
1039
+
1040
+
1041
+
1042
+
1043
+
1044
+
1045
+
1046
+
1047
+
1048
+
1049
+
1050
+
1051
+
1052
+
1053
+
1054
+
1055
+
1056
+
1057
+
1058
+ <li class="md-nav__item md-nav__item--section md-nav__item--nested">
1059
+
1060
+
1061
+
1062
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
1063
+
1064
+
1065
+ <div class="md-nav__link md-nav__container">
1066
+ <a href="../../plugins/" class="md-nav__link ">
1067
+
1068
+
1069
+
1070
+ <span class="md-ellipsis">
1071
+
1072
+
1073
+ Plugins
1074
+
1075
+
1076
+
1077
+ </span>
1078
+
1079
+
1080
+
1081
+ </a>
1082
+
1083
+
1084
+ <label class="md-nav__link " for="__nav_6" id="__nav_6_label" tabindex="">
1085
+ <span class="md-nav__icon md-icon"></span>
1086
+ </label>
1087
+
1088
+ </div>
1089
+
1090
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
1091
+ <label class="md-nav__title" for="__nav_6">
1092
+ <span class="md-nav__icon md-icon"></span>
1093
+
1094
+
1095
+ Plugins
1096
+
1097
+
1098
+ </label>
1099
+ <ul class="md-nav__list" data-md-scrollfix>
1100
+
1101
+
1102
+
1103
+
1104
+
1105
+
1106
+
1107
+ <li class="md-nav__item">
1108
+ <a href="../../plugins/version-matrix/" class="md-nav__link">
1109
+
1110
+
1111
+
1112
+ <span class="md-ellipsis">
1113
+
1114
+
1115
+ Version Matrix
1116
+
1117
+
1118
+
1119
+ </span>
1120
+
1121
+
1122
+
1123
+ </a>
1124
+ </li>
1125
+
1126
+
1127
+
1128
+
1129
+
1130
+
1131
+
1132
+
1133
+
1134
+
1135
+ <li class="md-nav__item">
1136
+ <a href="../../plugins/docking/" class="md-nav__link">
1137
+
1138
+
1139
+
1140
+ <span class="md-ellipsis">
1141
+
1142
+
1143
+ Docking
1144
+
1145
+
1146
+
1147
+ </span>
1148
+
1149
+
1150
+
1151
+ </a>
1152
+ </li>
1153
+
1154
+
1155
+
1156
+
1157
+
1158
+
1159
+
1160
+
1161
+
1162
+
1163
+ <li class="md-nav__item">
1164
+ <a href="../../plugins/descriptors/" class="md-nav__link">
1165
+
1166
+
1167
+
1168
+ <span class="md-ellipsis">
1169
+
1170
+
1171
+ Descriptors
1172
+
1173
+
1174
+
1175
+ </span>
1176
+
1177
+
1178
+
1179
+ </a>
1180
+ </li>
1181
+
1182
+
1183
+
1184
+
1185
+
1186
+
1187
+
1188
+
1189
+
1190
+
1191
+ <li class="md-nav__item">
1192
+ <a href="../../plugins/md/" class="md-nav__link">
1193
+
1194
+
1195
+
1196
+ <span class="md-ellipsis">
1197
+
1198
+
1199
+ MD
1200
+
1201
+
1202
+
1203
+ </span>
1204
+
1205
+
1206
+
1207
+ </a>
1208
+ </li>
1209
+
1210
+
1211
+
1212
+
1213
+
1214
+
1215
+
1216
+
1217
+
1218
+
1219
+ <li class="md-nav__item">
1220
+ <a href="../../plugins/fep/" class="md-nav__link">
1221
+
1222
+
1223
+
1224
+ <span class="md-ellipsis">
1225
+
1226
+
1227
+ FEP
1228
+
1229
+
1230
+
1231
+ </span>
1232
+
1233
+
1234
+
1235
+ </a>
1236
+ </li>
1237
+
1238
+
1239
+
1240
+
1241
+
1242
+
1243
+
1244
+
1245
+
1246
+
1247
+ <li class="md-nav__item">
1248
+ <a href="../../plugins/qm/" class="md-nav__link">
1249
+
1250
+
1251
+
1252
+ <span class="md-ellipsis">
1253
+
1254
+
1255
+ QM
1256
+
1257
+
1258
+
1259
+ </span>
1260
+
1261
+
1262
+
1263
+ </a>
1264
+ </li>
1265
+
1266
+
1267
+
1268
+
1269
+
1270
+
1271
+
1272
+
1273
+
1274
+
1275
+ <li class="md-nav__item">
1276
+ <a href="../../plugins/ml/" class="md-nav__link">
1277
+
1278
+
1279
+
1280
+ <span class="md-ellipsis">
1281
+
1282
+
1283
+ ML
1284
+
1285
+
1286
+
1287
+ </span>
1288
+
1289
+
1290
+
1291
+ </a>
1292
+ </li>
1293
+
1294
+
1295
+
1296
+
1297
+
1298
+
1299
+
1300
+
1301
+
1302
+
1303
+ <li class="md-nav__item">
1304
+ <a href="../../plugins/datascience/" class="md-nav__link">
1305
+
1306
+
1307
+
1308
+ <span class="md-ellipsis">
1309
+
1310
+
1311
+ Data Science
1312
+
1313
+
1314
+
1315
+ </span>
1316
+
1317
+
1318
+
1319
+ </a>
1320
+ </li>
1321
+
1322
+
1323
+
1324
+
1325
+ </ul>
1326
+ </nav>
1327
+
1328
+ </li>
1329
+
1330
+
1331
+
1332
+
1333
+
1334
+
1335
+
1336
+
1337
+
1338
+
1339
+
1340
+
1341
+
1342
+
1343
+
1344
+
1345
+
1346
+
1347
+
1348
+
1349
+
1350
+
1351
+
1352
+
1353
+
1354
+ <li class="md-nav__item md-nav__item--section md-nav__item--nested">
1355
+
1356
+
1357
+
1358
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
1359
+
1360
+
1361
+ <div class="md-nav__link md-nav__container">
1362
+ <a href="../../gui/" class="md-nav__link ">
1363
+
1364
+
1365
+
1366
+ <span class="md-ellipsis">
1367
+
1368
+
1369
+ GUI
1370
+
1371
+
1372
+
1373
+ </span>
1374
+
1375
+
1376
+
1377
+ </a>
1378
+
1379
+
1380
+ <label class="md-nav__link " for="__nav_7" id="__nav_7_label" tabindex="">
1381
+ <span class="md-nav__icon md-icon"></span>
1382
+ </label>
1383
+
1384
+ </div>
1385
+
1386
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
1387
+ <label class="md-nav__title" for="__nav_7">
1388
+ <span class="md-nav__icon md-icon"></span>
1389
+
1390
+
1391
+ GUI
1392
+
1393
+
1394
+ </label>
1395
+ <ul class="md-nav__list" data-md-scrollfix>
1396
+
1397
+
1398
+
1399
+
1400
+
1401
+
1402
+
1403
+ <li class="md-nav__item">
1404
+ <a href="../../gui/walkthrough/" class="md-nav__link">
1405
+
1406
+
1407
+
1408
+ <span class="md-ellipsis">
1409
+
1410
+
1411
+ Walkthrough
1412
+
1413
+
1414
+
1415
+ </span>
1416
+
1417
+
1418
+
1419
+ </a>
1420
+ </li>
1421
+
1422
+
1423
+
1424
+
1425
+
1426
+
1427
+
1428
+
1429
+
1430
+
1431
+ <li class="md-nav__item">
1432
+ <a href="../../gui/plugin-authoring/" class="md-nav__link">
1433
+
1434
+
1435
+
1436
+ <span class="md-ellipsis">
1437
+
1438
+
1439
+ Plugin GUI Authoring
1440
+
1441
+
1442
+
1443
+ </span>
1444
+
1445
+
1446
+
1447
+ </a>
1448
+ </li>
1449
+
1450
+
1451
+
1452
+
1453
+ </ul>
1454
+ </nav>
1455
+
1456
+ </li>
1457
+
1458
+
1459
+
1460
+
1461
+
1462
+
1463
+
1464
+
1465
+
1466
+
1467
+
1468
+
1469
+
1470
+
1471
+
1472
+
1473
+
1474
+
1475
+
1476
+
1477
+
1478
+
1479
+
1480
+
1481
+
1482
+
1483
+
1484
+ <li class="md-nav__item md-nav__item--section md-nav__item--nested">
1485
+
1486
+
1487
+
1488
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
1489
+
1490
+
1491
+ <div class="md-nav__link md-nav__container">
1492
+ <a href="../../reference/" class="md-nav__link ">
1493
+
1494
+
1495
+
1496
+ <span class="md-ellipsis">
1497
+
1498
+
1499
+ Reference
1500
+
1501
+
1502
+
1503
+ </span>
1504
+
1505
+
1506
+
1507
+ </a>
1508
+
1509
+
1510
+ <label class="md-nav__link " for="__nav_8" id="__nav_8_label" tabindex="">
1511
+ <span class="md-nav__icon md-icon"></span>
1512
+ </label>
1513
+
1514
+ </div>
1515
+
1516
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
1517
+ <label class="md-nav__title" for="__nav_8">
1518
+ <span class="md-nav__icon md-icon"></span>
1519
+
1520
+
1521
+ Reference
1522
+
1523
+
1524
+ </label>
1525
+ <ul class="md-nav__list" data-md-scrollfix>
1526
+
1527
+
1528
+
1529
+
1530
+
1531
+
1532
+
1533
+ <li class="md-nav__item">
1534
+ <a href="../../reference/api/" class="md-nav__link">
1535
+
1536
+
1537
+
1538
+ <span class="md-ellipsis">
1539
+
1540
+
1541
+ Public Python API
1542
+
1543
+
1544
+
1545
+ </span>
1546
+
1547
+
1548
+
1549
+ </a>
1550
+ </li>
1551
+
1552
+
1553
+
1554
+
1555
+
1556
+
1557
+
1558
+
1559
+
1560
+
1561
+ <li class="md-nav__item">
1562
+ <a href="../../examples/" class="md-nav__link">
1563
+
1564
+
1565
+
1566
+ <span class="md-ellipsis">
1567
+
1568
+
1569
+ Example Library
1570
+
1571
+
1572
+
1573
+ </span>
1574
+
1575
+
1576
+
1577
+ </a>
1578
+ </li>
1579
+
1580
+
1581
+
1582
+
1583
+
1584
+
1585
+
1586
+
1587
+
1588
+
1589
+ <li class="md-nav__item">
1590
+ <a href="../../examples/quickstart/" class="md-nav__link">
1591
+
1592
+
1593
+
1594
+ <span class="md-ellipsis">
1595
+
1596
+
1597
+ Example Data Provenance
1598
+
1599
+
1600
+
1601
+ </span>
1602
+
1603
+
1604
+
1605
+ </a>
1606
+ </li>
1607
+
1608
+
1609
+
1610
+
1611
+ </ul>
1612
+ </nav>
1613
+
1614
+ </li>
1615
+
1616
+
1617
+
1618
+
1619
+
1620
+
1621
+
1622
+
1623
+
1624
+
1625
+
1626
+
1627
+
1628
+
1629
+
1630
+
1631
+
1632
+
1633
+
1634
+
1635
+
1636
+
1637
+
1638
+
1639
+
1640
+
1641
+
1642
+ <li class="md-nav__item md-nav__item--section md-nav__item--nested">
1643
+
1644
+
1645
+
1646
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" >
1647
+
1648
+
1649
+ <label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="">
1650
+
1651
+
1652
+
1653
+ <span class="md-ellipsis">
1654
+
1655
+
1656
+ Explanation
1657
+
1658
+
1659
+
1660
+ </span>
1661
+
1662
+
1663
+
1664
+ <span class="md-nav__icon md-icon"></span>
1665
+ </label>
1666
+
1667
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false">
1668
+ <label class="md-nav__title" for="__nav_9">
1669
+ <span class="md-nav__icon md-icon"></span>
1670
+
1671
+
1672
+ Explanation
1673
+
1674
+
1675
+ </label>
1676
+ <ul class="md-nav__list" data-md-scrollfix>
1677
+
1678
+
1679
+
1680
+
1681
+
1682
+
1683
+
1684
+ <li class="md-nav__item">
1685
+ <a href="../../explanation/reproducibility/" class="md-nav__link">
1686
+
1687
+
1688
+
1689
+ <span class="md-ellipsis">
1690
+
1691
+
1692
+ Reproducibility
1693
+
1694
+
1695
+
1696
+ </span>
1697
+
1698
+
1699
+
1700
+ </a>
1701
+ </li>
1702
+
1703
+
1704
+
1705
+
1706
+
1707
+
1708
+
1709
+
1710
+
1711
+
1712
+ <li class="md-nav__item">
1713
+ <a href="../../explanation/references/" class="md-nav__link">
1714
+
1715
+
1716
+
1717
+ <span class="md-ellipsis">
1718
+
1719
+
1720
+ Method References
1721
+
1722
+
1723
+
1724
+ </span>
1725
+
1726
+
1727
+
1728
+ </a>
1729
+ </li>
1730
+
1731
+
1732
+
1733
+
1734
+
1735
+
1736
+
1737
+
1738
+
1739
+
1740
+ <li class="md-nav__item">
1741
+ <a href="../../explanation/third-party-notices/" class="md-nav__link">
1742
+
1743
+
1744
+
1745
+ <span class="md-ellipsis">
1746
+
1747
+
1748
+ Third-party Notices
1749
+
1750
+
1751
+
1752
+ </span>
1753
+
1754
+
1755
+
1756
+ </a>
1757
+ </li>
1758
+
1759
+
1760
+
1761
+
1762
+ </ul>
1763
+ </nav>
1764
+
1765
+ </li>
1766
+
1767
+
1768
+
1769
+
1770
+
1771
+
1772
+
1773
+
1774
+
1775
+
1776
+
1777
+
1778
+
1779
+
1780
+
1781
+
1782
+
1783
+
1784
+
1785
+
1786
+
1787
+
1788
+
1789
+
1790
+
1791
+
1792
+
1793
+
1794
+
1795
+
1796
+
1797
+
1798
+
1799
+
1800
+
1801
+
1802
+
1803
+ <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
1804
+
1805
+
1806
+
1807
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10" checked>
1808
+
1809
+
1810
+ <div class="md-nav__link md-nav__container">
1811
+ <a href="../" class="md-nav__link ">
1812
+
1813
+
1814
+
1815
+ <span class="md-ellipsis">
1816
+
1817
+
1818
+ Development
1819
+
1820
+
1821
+
1822
+ </span>
1823
+
1824
+
1825
+
1826
+ </a>
1827
+
1828
+
1829
+ <label class="md-nav__link " for="__nav_10" id="__nav_10_label" tabindex="">
1830
+ <span class="md-nav__icon md-icon"></span>
1831
+ </label>
1832
+
1833
+ </div>
1834
+
1835
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="true">
1836
+ <label class="md-nav__title" for="__nav_10">
1837
+ <span class="md-nav__icon md-icon"></span>
1838
+
1839
+
1840
+ Development
1841
+
1842
+
1843
+ </label>
1844
+ <ul class="md-nav__list" data-md-scrollfix>
1845
+
1846
+
1847
+
1848
+
1849
+
1850
+
1851
+
1852
+ <li class="md-nav__item">
1853
+ <a href="../release-notes/" class="md-nav__link">
1854
+
1855
+
1856
+
1857
+ <span class="md-ellipsis">
1858
+
1859
+
1860
+ Release Notes
1861
+
1862
+
1863
+
1864
+ </span>
1865
+
1866
+
1867
+
1868
+ </a>
1869
+ </li>
1870
+
1871
+
1872
+
1873
+
1874
+
1875
+
1876
+
1877
+
1878
+
1879
+
1880
+ <li class="md-nav__item">
1881
+ <a href="../tool-authoring/" class="md-nav__link">
1882
+
1883
+
1884
+
1885
+ <span class="md-ellipsis">
1886
+
1887
+
1888
+ Tool Authoring
1889
+
1890
+
1891
+
1892
+ </span>
1893
+
1894
+
1895
+
1896
+ </a>
1897
+ </li>
1898
+
1899
+
1900
+
1901
+
1902
+
1903
+
1904
+
1905
+
1906
+
1907
+
1908
+ <li class="md-nav__item">
1909
+ <a href="../documentation/" class="md-nav__link">
1910
+
1911
+
1912
+
1913
+ <span class="md-ellipsis">
1914
+
1915
+
1916
+ Documentation
1917
+
1918
+
1919
+
1920
+ </span>
1921
+
1922
+
1923
+
1924
+ </a>
1925
+ </li>
1926
+
1927
+
1928
+
1929
+
1930
+
1931
+
1932
+
1933
+
1934
+
1935
+
1936
+ <li class="md-nav__item">
1937
+ <a href="../contributing/" class="md-nav__link">
1938
+
1939
+
1940
+
1941
+ <span class="md-ellipsis">
1942
+
1943
+
1944
+ Contributing
1945
+
1946
+
1947
+
1948
+ </span>
1949
+
1950
+
1951
+
1952
+ </a>
1953
+ </li>
1954
+
1955
+
1956
+
1957
+
1958
+
1959
+
1960
+
1961
+
1962
+
1963
+
1964
+ <li class="md-nav__item">
1965
+ <a href="../security/" class="md-nav__link">
1966
+
1967
+
1968
+
1969
+ <span class="md-ellipsis">
1970
+
1971
+
1972
+ Security Reporting
1973
+
1974
+
1975
+
1976
+ </span>
1977
+
1978
+
1979
+
1980
+ </a>
1981
+ </li>
1982
+
1983
+
1984
+
1985
+
1986
+
1987
+
1988
+
1989
+
1990
+
1991
+
1992
+ <li class="md-nav__item">
1993
+ <a href="../release-readiness/" class="md-nav__link">
1994
+
1995
+
1996
+
1997
+ <span class="md-ellipsis">
1998
+
1999
+
2000
+ Release Readiness
2001
+
2002
+
2003
+
2004
+ </span>
2005
+
2006
+
2007
+
2008
+ </a>
2009
+ </li>
2010
+
2011
+
2012
+
2013
+
2014
+
2015
+
2016
+
2017
+
2018
+
2019
+
2020
+
2021
+
2022
+ <li class="md-nav__item md-nav__item--active">
2023
+
2024
+ <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
2025
+
2026
+
2027
+
2028
+
2029
+
2030
+ <label class="md-nav__link md-nav__link--active" for="__toc">
2031
+
2032
+
2033
+
2034
+ <span class="md-ellipsis">
2035
+
2036
+
2037
+ CI and Publishing
2038
+
2039
+
2040
+
2041
+ </span>
2042
+
2043
+
2044
+
2045
+ <span class="md-nav__icon md-icon"></span>
2046
+ </label>
2047
+
2048
+ <a href="./" class="md-nav__link md-nav__link--active">
2049
+
2050
+
2051
+
2052
+ <span class="md-ellipsis">
2053
+
2054
+
2055
+ CI and Publishing
2056
+
2057
+
2058
+
2059
+ </span>
2060
+
2061
+
2062
+
2063
+ </a>
2064
+
2065
+
2066
+
2067
+ <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
2068
+
2069
+
2070
+
2071
+
2072
+
2073
+
2074
+ <label class="md-nav__title" for="__toc">
2075
+ <span class="md-nav__icon md-icon"></span>
2076
+ Table of contents
2077
+ </label>
2078
+ <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
2079
+
2080
+ <li class="md-nav__item">
2081
+ <a href="#validate-a-change" class="md-nav__link">
2082
+ <span class="md-ellipsis">
2083
+
2084
+ Validate a change
2085
+
2086
+ </span>
2087
+ </a>
2088
+
2089
+ </li>
2090
+
2091
+ <li class="md-nav__item">
2092
+ <a href="#host-the-generated-site" class="md-nav__link">
2093
+ <span class="md-ellipsis">
2094
+
2095
+ Host the generated site
2096
+
2097
+ </span>
2098
+ </a>
2099
+
2100
+ </li>
2101
+
2102
+ <li class="md-nav__item">
2103
+ <a href="#python-distribution-releases" class="md-nav__link">
2104
+ <span class="md-ellipsis">
2105
+
2106
+ Python distribution releases
2107
+
2108
+ </span>
2109
+ </a>
2110
+
2111
+ </li>
2112
+
2113
+ </ul>
2114
+
2115
+ </nav>
2116
+
2117
+ </li>
2118
+
2119
+
2120
+
2121
+
2122
+ </ul>
2123
+ </nav>
2124
+
2125
+ </li>
2126
+
2127
+
2128
+
2129
+ </ul>
2130
+ </nav>
2131
+ </div>
2132
+ </div>
2133
+ </div>
2134
+
2135
+
2136
+
2137
+ <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
2138
+ <div class="md-sidebar__scrollwrap">
2139
+ <div class="md-sidebar__inner">
2140
+
2141
+
2142
+ <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
2143
+
2144
+
2145
+
2146
+
2147
+
2148
+
2149
+ <label class="md-nav__title" for="__toc">
2150
+ <span class="md-nav__icon md-icon"></span>
2151
+ Table of contents
2152
+ </label>
2153
+ <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
2154
+
2155
+ <li class="md-nav__item">
2156
+ <a href="#validate-a-change" class="md-nav__link">
2157
+ <span class="md-ellipsis">
2158
+
2159
+ Validate a change
2160
+
2161
+ </span>
2162
+ </a>
2163
+
2164
+ </li>
2165
+
2166
+ <li class="md-nav__item">
2167
+ <a href="#host-the-generated-site" class="md-nav__link">
2168
+ <span class="md-ellipsis">
2169
+
2170
+ Host the generated site
2171
+
2172
+ </span>
2173
+ </a>
2174
+
2175
+ </li>
2176
+
2177
+ <li class="md-nav__item">
2178
+ <a href="#python-distribution-releases" class="md-nav__link">
2179
+ <span class="md-ellipsis">
2180
+
2181
+ Python distribution releases
2182
+
2183
+ </span>
2184
+ </a>
2185
+
2186
+ </li>
2187
+
2188
+ </ul>
2189
+
2190
+ </nav>
2191
+ </div>
2192
+ </div>
2193
+ </div>
2194
+
2195
+
2196
+
2197
+ <div class="md-content" data-md-component="content">
2198
+
2199
+ <article class="md-content__inner md-typeset">
2200
+
2201
+
2202
+
2203
+
2204
+
2205
+
2206
+
2207
+
2208
+ <h1 id="ci-and-publishing">CI and Publishing<a class="headerlink" href="#ci-and-publishing" title="Permanent link">&para;</a></h1>
2209
+ <p>Documentation validation is separate from deployment and Python package upload.</p>
2210
+ <h2 id="validate-a-change">Validate a change<a class="headerlink" href="#validate-a-change" title="Permanent link">&para;</a></h2>
2211
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>python<span class="w"> </span>-m<span class="w"> </span>pip<span class="w"> </span>install<span class="w"> </span>-r<span class="w"> </span>requirements.txt<span class="w"> </span>-r<span class="w"> </span>requirements-test.txt
2212
+ <a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a>properdocs<span class="w"> </span>build<span class="w"> </span>--strict<span class="w"> </span>--site-dir<span class="w"> </span>site
2213
+ <a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a>python<span class="w"> </span>scripts/check_links.py<span class="w"> </span>site
2214
+ <a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a>python<span class="w"> </span>-m<span class="w"> </span>pytest<span class="w"> </span>-q
2215
+ </code></pre></div>
2216
+ <p>The tests build wheels and rebuild from a source distribution, check packaged
2217
+ assets, and test the installed-docs CLI and server. Tutorial
2218
+ integration tests require compatible core and data-science installations; they
2219
+ report skips when those packages are absent. Run them explicitly in a compatible
2220
+ public-component environment before release.</p>
2221
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>python<span class="w"> </span>-m<span class="w"> </span>pytest<span class="w"> </span>tests/test_examples.py<span class="w"> </span>-q<span class="w"> </span>--require-examples
2222
+ </code></pre></div>
2223
+ <p>GitHub branch and tag pushes and pull requests run documentation checks without
2224
+ requiring deployment. Publication jobs depend
2225
+ on successful validation. Optional scientific
2226
+ template schema checks use an explicit list of public configuration classes;
2227
+ they do not discover arbitrary installed plugins.</p>
2228
+ <h2 id="host-the-generated-site">Host the generated site<a class="headerlink" href="#host-the-generated-site" title="Permanent link">&para;</a></h2>
2229
+ <p>GitHub Pages uses <code>.github/workflows/pages.yml</code>. Enable Pages with the GitHub
2230
+ Actions source, then opt in with repository variable <code>DOCS_PUBLISH_ENABLED=true</code>.
2231
+ Builds produce static artifacts on ordinary changes, but deployments run only for an
2232
+ enabled default branch, including a manual workflow on that branch. Release tags
2233
+ run validation without deploying Pages.</p>
2234
+ <p>Configure the public site and repository URLs in <code>properdocs.yml</code> after hosting
2235
+ is established. The source is platform-neutral. The installed docs package ships
2236
+ its own site; hosting is not required to use <code>caddforge docs</code>.</p>
2237
+ <h2 id="python-distribution-releases">Python distribution releases<a class="headerlink" href="#python-distribution-releases" title="Permanent link">&para;</a></h2>
2238
+ <p><code>caddforge-core</code> owns Python modules and the CLI. The metadata-only bundle publishes
2239
+ the <code>caddforge</code> distribution and pins the reviewed component set. See
2240
+ <a href="../release-readiness/">release prerequisites</a> before any release.</p>
2241
+ <p>Every public component uses <code>.github/workflows/release.yml</code> for branch/PR
2242
+ validation and publication on pushed <code>v*</code> tags, matching PyOCL and the
2243
+ maintained third-party tools. A single Python 3.12 build produces the wheel
2244
+ and source archive; tests install that exact wheel on Linux with Python
2245
+ 3.10 and 3.12. Publication depends on all required checks. Manual runs and
2246
+ branch pushes do not publish. No <code>PYPI_PUBLISH_ENABLED</code> variable is used.</p>
2247
+ <p>Metadata checks run on ordinary builds as well as tags. They reject private
2248
+ dependencies and direct Git requirements, compare wheel/source metadata, and
2249
+ require a release tag to match the built version. Release tags must have
2250
+ public versions without local or <code>.dev</code> suffixes; a <code>0.x</code> version still
2251
+ represents the project's initial development series. Core and plugin versions
2252
+ come from Git tags. Docs and bundle versions are explicit in <code>pyproject.toml</code>
2253
+ and must be updated before tagging.</p>
2254
+ <p>The tests run from temporary fixture copies without checkout <code>src</code> directories.
2255
+ Core, data-science, GUI, ML, QM and docking run their regression suites.
2256
+ Descriptors run plugin, clustering and PheSA tests without downloading ANI
2257
+ weights. MD runs configuration, trajectory and workflow contract tests;
2258
+ external engines and long simulations remain separate. FEP tests orchestration
2259
+ and settings without requiring an OpenFE runtime. FEP and docking install
2260
+ the candidate wheel with its <code>[gui]</code> extra so GUI regression tests exercise
2261
+ the declared dependencies, including the published <code>caddforge-gui</code> package.
2262
+ Each selection is recorded
2263
+ in <code>scripts/ci_tests.json</code>. These profiles do not claim GPU or complete
2264
+ scientific-engine validation.</p>
2265
+ <p>Docs additionally validates source examples, assets, links and distribution
2266
+ rebuilding, tests the installed viewer, and requires successful execution of
2267
+ the CLI/Python tutorials using published core and data science. The docs wheel
2268
+ is installed with its <code>[test]</code> extra, including Rich for terminal-output
2269
+ assertions. The bundle runs the ownership migration with an
2270
+ explicit core source checkout, and requires a clean full installation from
2271
+ public PyPI before publishing. Its release must follow its pinned components.</p>
2272
+ <p>For each PyPI project, configure a Trusted Publisher with GitHub owner
2273
+ <code>idorsia</code>, the corresponding repository, workflow filename <code>release.yml</code>,
2274
+ and environment <code>pypi</code>. For the bundle the PyPI project is <code>caddforge</code>,
2275
+ while the repository is <code>caddforge-bundle</code>. GitHub environments may require
2276
+ reviewer approval if desired. Repository workflows cannot configure these
2277
+ PyPI account settings for you. Publish core first, then GUI before FEP and
2278
+ docking. Publish docking and descriptors before MD, and data-science before
2279
+ docs. Publish the bundle last.</p>
2280
+ <p>Pushing a release tag is the publication action once the Trusted Publisher
2281
+ is configured. <code>.github/workflows/pages.yml</code> handles site deployment independently
2282
+ and retains the explicit <code>DOCS_PUBLISH_ENABLED=true</code> opt-in.</p>
2283
+
2284
+
2285
+
2286
+
2287
+
2288
+
2289
+
2290
+
2291
+
2292
+
2293
+
2294
+
2295
+
2296
+ </article>
2297
+ </div>
2298
+
2299
+
2300
+ <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
2301
+ </div>
2302
+
2303
+ <button type="button" class="md-top md-icon" data-md-component="top" hidden>
2304
+
2305
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
2306
+ Back to top
2307
+ </button>
2308
+
2309
+ </main>
2310
+
2311
+ <footer class="md-footer">
2312
+
2313
+ <div class="md-footer-meta md-typeset">
2314
+ <div class="md-footer-meta__inner md-grid">
2315
+ <div class="md-copyright">
2316
+
2317
+
2318
+ Made with
2319
+ <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
2320
+ Material for MkDocs
2321
+ </a>
2322
+
2323
+ </div>
2324
+
2325
+ </div>
2326
+ </div>
2327
+ </footer>
2328
+
2329
+ </div>
2330
+ <div class="md-dialog" data-md-component="dialog">
2331
+ <div class="md-dialog__inner md-typeset"></div>
2332
+ </div>
2333
+
2334
+
2335
+
2336
+
2337
+
2338
+ <script id="__config" type="application/json">{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.sections", "navigation.indexes", "navigation.top", "search.highlight", "search.suggest", "content.code.copy"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
2339
+
2340
+
2341
+ <script src="../../assets/javascripts/bundle.d7400e89.min.js"></script>
2342
+
2343
+
2344
+ </body>
2345
+ </html>