easydiffraction 0.15.0__tar.gz → 0.17.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 (866) hide show
  1. easydiffraction-0.17.0/.codecov.yml +26 -0
  2. easydiffraction-0.17.0/.copier-answers.yml +26 -0
  3. easydiffraction-0.17.0/.github/actions/download-artifact/action.yml +50 -0
  4. easydiffraction-0.17.0/.github/actions/github-script/action.yml +19 -0
  5. easydiffraction-0.17.0/.github/actions/setup-easyscience-bot/action.yml +40 -0
  6. easydiffraction-0.17.0/.github/actions/setup-pixi/action.yml +44 -0
  7. easydiffraction-0.17.0/.github/actions/upload-artifact/action.yml +49 -0
  8. easydiffraction-0.17.0/.github/actions/upload-codecov/action.yml +42 -0
  9. easydiffraction-0.17.0/.github/copilot-instructions.md +224 -0
  10. easydiffraction-0.17.0/.github/scripts/publish-dashboard.sh +77 -0
  11. easydiffraction-0.17.0/.github/workflows/backmerge.yml +109 -0
  12. easydiffraction-0.17.0/.github/workflows/cleanup.yml +84 -0
  13. easydiffraction-0.17.0/.github/workflows/coverage.yml +94 -0
  14. easydiffraction-0.17.0/.github/workflows/dashboard.yml +115 -0
  15. easydiffraction-0.17.0/.github/workflows/docs.yml +188 -0
  16. easydiffraction-0.17.0/.github/workflows/issues-labels.yml +40 -0
  17. easydiffraction-0.17.0/.github/workflows/lint-format.yml +124 -0
  18. easydiffraction-0.17.0/.github/workflows/pr-labels.yml +45 -0
  19. easydiffraction-0.17.0/.github/workflows/pypi-publish.yml +46 -0
  20. easydiffraction-0.17.0/.github/workflows/pypi-test.yml +91 -0
  21. easydiffraction-0.17.0/.github/workflows/release-notes.yml +71 -0
  22. easydiffraction-0.17.0/.github/workflows/release-pr.yml +55 -0
  23. easydiffraction-0.17.0/.github/workflows/security.yml +93 -0
  24. easydiffraction-0.17.0/.github/workflows/test-trigger.yml +40 -0
  25. easydiffraction-0.17.0/.github/workflows/test.yml +321 -0
  26. easydiffraction-0.17.0/.github/workflows/tutorial-tests-colab.yaml +27 -0
  27. easydiffraction-0.17.0/.github/workflows/tutorial-tests-trigger.yml +40 -0
  28. easydiffraction-0.17.0/.github/workflows/tutorial-tests.yml +64 -0
  29. easydiffraction-0.17.0/.gitignore +53 -0
  30. easydiffraction-0.17.0/CONTRIBUTING.md +452 -0
  31. easydiffraction-0.17.0/PKG-INFO +135 -0
  32. easydiffraction-0.17.0/README.md +53 -0
  33. easydiffraction-0.17.0/docs/dev/adrs/accepted/analysis-cif-fit-state.md +193 -0
  34. easydiffraction-0.17.0/docs/dev/adrs/accepted/category-owner-sections.md +206 -0
  35. easydiffraction-0.17.0/docs/dev/adrs/accepted/category-parameter-access.md +44 -0
  36. easydiffraction-0.17.0/docs/dev/adrs/accepted/development-docs-structure.md +66 -0
  37. easydiffraction-0.17.0/docs/dev/adrs/accepted/display-ux.md +244 -0
  38. easydiffraction-0.17.0/docs/dev/adrs/accepted/enum-backed-closed-values.md +34 -0
  39. easydiffraction-0.17.0/docs/dev/adrs/accepted/factory-contracts.md +44 -0
  40. easydiffraction-0.17.0/docs/dev/adrs/accepted/factory-tag-naming.md +48 -0
  41. easydiffraction-0.17.0/docs/dev/adrs/accepted/fit-mode-categories.md +781 -0
  42. easydiffraction-0.17.0/docs/dev/adrs/accepted/free-flag-cif-encoding.md +39 -0
  43. easydiffraction-0.17.0/docs/dev/adrs/accepted/guarded-public-properties.md +44 -0
  44. easydiffraction-0.17.0/docs/dev/adrs/accepted/help-discoverability.md +65 -0
  45. easydiffraction-0.17.0/docs/dev/adrs/accepted/immutable-experiment-type.md +35 -0
  46. easydiffraction-0.17.0/docs/dev/adrs/accepted/lint-complexity-thresholds.md +33 -0
  47. easydiffraction-0.17.0/docs/dev/adrs/accepted/loop-category-key-identity.md +163 -0
  48. easydiffraction-0.17.0/docs/dev/adrs/accepted/notebook-generation.md +34 -0
  49. easydiffraction-0.17.0/docs/dev/adrs/accepted/parameter-correlation-persistence.md +104 -0
  50. easydiffraction-0.17.0/docs/dev/adrs/accepted/project-facade-and-persistence.md +80 -0
  51. easydiffraction-0.17.0/docs/dev/adrs/accepted/property-docstring-template.md +39 -0
  52. easydiffraction-0.17.0/docs/dev/adrs/accepted/runtime-fit-results.md +36 -0
  53. easydiffraction-0.17.0/docs/dev/adrs/accepted/selector-families.md +40 -0
  54. easydiffraction-0.17.0/docs/dev/adrs/accepted/string-paths-and-live-descriptors.md +45 -0
  55. easydiffraction-0.17.0/docs/dev/adrs/accepted/switchable-category-api.md +45 -0
  56. easydiffraction-0.17.0/docs/dev/adrs/accepted/test-strategy.md +41 -0
  57. easydiffraction-0.17.0/docs/dev/adrs/accepted/type-neutral-adp-parameters.md +42 -0
  58. easydiffraction-0.17.0/docs/dev/adrs/index.md +46 -0
  59. easydiffraction-0.17.0/docs/dev/adrs/suggestions/fit-output-files-and-data-exports.md +172 -0
  60. easydiffraction-0.17.0/docs/dev/adrs/suggestions/parameter-posterior-summary.md +337 -0
  61. easydiffraction-0.17.0/docs/dev/adrs/suggestions/python-cif-category-correspondence.md +338 -0
  62. easydiffraction-0.17.0/docs/dev/adrs/suggestions/undo-fit.md +126 -0
  63. easydiffraction-0.17.0/docs/dev/benchmarking/20260519-103251_darwin-arm64_py314_tutorial-benchmarks.csv +24 -0
  64. easydiffraction-0.17.0/docs/dev/benchmarking/20260519-103500_darwin-arm64_py314_tutorial-benchmarks.csv +24 -0
  65. easydiffraction-0.17.0/docs/dev/benchmarking/20260519-121524_darwin-arm64_py314_tutorial-benchmarks.csv +24 -0
  66. easydiffraction-0.17.0/docs/dev/index.md +29 -0
  67. easydiffraction-0.17.0/docs/dev/issues/closed.md +161 -0
  68. easydiffraction-0.17.0/docs/dev/issues/open.md +1786 -0
  69. easydiffraction-0.17.0/docs/dev/package-structure/full.md +570 -0
  70. easydiffraction-0.17.0/docs/dev/package-structure/short.md +292 -0
  71. easydiffraction-0.17.0/docs/docs/cli/index.md +159 -0
  72. easydiffraction-0.17.0/docs/docs/installation-and-setup/index.md +300 -0
  73. easydiffraction-0.17.0/docs/docs/introduction/index.md +74 -0
  74. easydiffraction-0.17.0/docs/docs/quick-reference/index.md +430 -0
  75. easydiffraction-0.17.0/docs/docs/tutorials/ed-1.ipynb +283 -0
  76. easydiffraction-0.17.0/docs/docs/tutorials/ed-1.py +110 -0
  77. easydiffraction-0.17.0/docs/docs/tutorials/ed-10.ipynb +242 -0
  78. easydiffraction-0.17.0/docs/docs/tutorials/ed-10.py +92 -0
  79. easydiffraction-0.17.0/docs/docs/tutorials/ed-11.ipynb +273 -0
  80. easydiffraction-0.17.0/docs/docs/tutorials/ed-11.py +104 -0
  81. easydiffraction-0.17.0/docs/docs/tutorials/ed-12.ipynb +313 -0
  82. easydiffraction-0.17.0/docs/docs/tutorials/ed-12.py +123 -0
  83. easydiffraction-0.17.0/docs/docs/tutorials/ed-13.ipynb +2667 -0
  84. easydiffraction-0.17.0/docs/docs/tutorials/ed-13.py +1508 -0
  85. easydiffraction-0.17.0/docs/docs/tutorials/ed-14.ipynb +451 -0
  86. easydiffraction-0.17.0/docs/docs/tutorials/ed-14.py +159 -0
  87. easydiffraction-0.17.0/docs/docs/tutorials/ed-15.ipynb +421 -0
  88. easydiffraction-0.17.0/docs/docs/tutorials/ed-15.py +136 -0
  89. easydiffraction-0.17.0/docs/docs/tutorials/ed-16.ipynb +615 -0
  90. easydiffraction-0.17.0/docs/docs/tutorials/ed-16.py +251 -0
  91. easydiffraction-0.17.0/docs/docs/tutorials/ed-17.ipynb +851 -0
  92. easydiffraction-0.17.0/docs/docs/tutorials/ed-17.py +397 -0
  93. easydiffraction-0.17.0/docs/docs/tutorials/ed-18.ipynb +161 -0
  94. easydiffraction-0.17.0/docs/docs/tutorials/ed-18.py +49 -0
  95. easydiffraction-0.17.0/docs/docs/tutorials/ed-2.ipynb +551 -0
  96. easydiffraction-0.17.0/docs/docs/tutorials/ed-2.py +235 -0
  97. easydiffraction-0.17.0/docs/docs/tutorials/ed-20.ipynb +816 -0
  98. easydiffraction-0.17.0/docs/docs/tutorials/ed-20.py +381 -0
  99. easydiffraction-0.17.0/docs/docs/tutorials/ed-21.ipynb +763 -0
  100. easydiffraction-0.17.0/docs/docs/tutorials/ed-21.py +356 -0
  101. easydiffraction-0.17.0/docs/docs/tutorials/ed-22.ipynb +607 -0
  102. easydiffraction-0.17.0/docs/docs/tutorials/ed-22.py +269 -0
  103. easydiffraction-0.17.0/docs/docs/tutorials/ed-23.ipynb +236 -0
  104. easydiffraction-0.17.0/docs/docs/tutorials/ed-23.py +90 -0
  105. easydiffraction-0.17.0/docs/docs/tutorials/ed-24.ipynb +223 -0
  106. easydiffraction-0.17.0/docs/docs/tutorials/ed-24.py +82 -0
  107. easydiffraction-0.17.0/docs/docs/tutorials/ed-3.ipynb +1600 -0
  108. easydiffraction-0.17.0/docs/docs/tutorials/ed-3.py +637 -0
  109. easydiffraction-0.17.0/docs/docs/tutorials/ed-4.ipynb +713 -0
  110. easydiffraction-0.17.0/docs/docs/tutorials/ed-4.py +321 -0
  111. easydiffraction-0.17.0/docs/docs/tutorials/ed-5.ipynb +664 -0
  112. easydiffraction-0.17.0/docs/docs/tutorials/ed-5.py +300 -0
  113. easydiffraction-0.17.0/docs/docs/tutorials/ed-6.ipynb +848 -0
  114. easydiffraction-0.17.0/docs/docs/tutorials/ed-6.py +350 -0
  115. easydiffraction-0.17.0/docs/docs/tutorials/ed-7.ipynb +922 -0
  116. easydiffraction-0.17.0/docs/docs/tutorials/ed-7.py +352 -0
  117. easydiffraction-0.17.0/docs/docs/tutorials/ed-8.ipynb +732 -0
  118. easydiffraction-0.17.0/docs/docs/tutorials/ed-8.py +367 -0
  119. easydiffraction-0.17.0/docs/docs/tutorials/ed-9.ipynb +695 -0
  120. easydiffraction-0.17.0/docs/docs/tutorials/ed-9.py +304 -0
  121. easydiffraction-0.17.0/docs/docs/tutorials/index.json +149 -0
  122. easydiffraction-0.17.0/docs/docs/tutorials/index.md +132 -0
  123. easydiffraction-0.17.0/docs/docs/user-guide/analysis-workflow/analysis.md +376 -0
  124. easydiffraction-0.17.0/docs/docs/user-guide/analysis-workflow/project.md +279 -0
  125. easydiffraction-0.17.0/docs/docs/user-guide/first-steps.md +189 -0
  126. easydiffraction-0.17.0/docs/mkdocs.yml +243 -0
  127. easydiffraction-0.17.0/pixi.lock +13107 -0
  128. easydiffraction-0.17.0/pixi.toml +298 -0
  129. easydiffraction-0.17.0/pyproject.toml +413 -0
  130. easydiffraction-0.17.0/src/easydiffraction/__init__.py +19 -0
  131. easydiffraction-0.17.0/src/easydiffraction/__main__.py +245 -0
  132. easydiffraction-0.17.0/src/easydiffraction/analysis/__init__.py +68 -0
  133. easydiffraction-0.17.0/src/easydiffraction/analysis/analysis.py +2116 -0
  134. easydiffraction-0.17.0/src/easydiffraction/analysis/calculators/base.py +99 -0
  135. easydiffraction-0.17.0/src/easydiffraction/analysis/calculators/cryspy.py +1239 -0
  136. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/__init__.py +46 -0
  137. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/aliases/default.py +143 -0
  138. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_convergence/__init__.py +7 -0
  139. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_convergence/default.py +121 -0
  140. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_convergence/factory.py +17 -0
  141. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_distribution_caches/__init__.py +12 -0
  142. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_distribution_caches/default.py +151 -0
  143. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_distribution_caches/factory.py +17 -0
  144. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_pair_caches/__init__.py +8 -0
  145. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_pair_caches/default.py +267 -0
  146. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_pair_caches/factory.py +17 -0
  147. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_parameter_posteriors/__init__.py +12 -0
  148. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_parameter_posteriors/default.py +242 -0
  149. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_parameter_posteriors/factory.py +17 -0
  150. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_predictive_datasets/__init__.py +12 -0
  151. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_predictive_datasets/default.py +260 -0
  152. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_predictive_datasets/factory.py +17 -0
  153. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_result/__init__.py +5 -0
  154. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_result/default.py +215 -0
  155. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_result/factory.py +17 -0
  156. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_sampler/__init__.py +5 -0
  157. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_sampler/default.py +133 -0
  158. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_sampler/factory.py +17 -0
  159. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/constraints/default.py +188 -0
  160. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/deterministic_result/__init__.py +7 -0
  161. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/deterministic_result/default.py +187 -0
  162. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/deterministic_result/factory.py +17 -0
  163. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/fit_parameter_correlations/__init__.py +12 -0
  164. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/fit_parameter_correlations/default.py +184 -0
  165. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/fit_parameter_correlations/factory.py +17 -0
  166. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/fit_parameters/__init__.py +6 -0
  167. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/fit_parameters/default.py +177 -0
  168. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/fit_parameters/factory.py +17 -0
  169. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/fit_result/__init__.py +5 -0
  170. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/fit_result/default.py +135 -0
  171. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/fit_result/factory.py +17 -0
  172. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/fitting/__init__.py +5 -0
  173. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/fitting/default.py +125 -0
  174. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/fitting/factory.py +17 -0
  175. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/joint_fit/__init__.py +8 -0
  176. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/joint_fit/default.py +94 -0
  177. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/joint_fit/factory.py +17 -0
  178. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/sequential_fit/__init__.py +7 -0
  179. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/sequential_fit/default.py +124 -0
  180. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/sequential_fit/factory.py +17 -0
  181. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/sequential_fit_extract/__init__.py +14 -0
  182. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/sequential_fit_extract/default.py +162 -0
  183. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/sequential_fit_extract/factory.py +17 -0
  184. easydiffraction-0.17.0/src/easydiffraction/analysis/enums.py +54 -0
  185. easydiffraction-0.17.0/src/easydiffraction/analysis/fit_helpers/__init__.py +8 -0
  186. easydiffraction-0.17.0/src/easydiffraction/analysis/fit_helpers/bayesian.py +777 -0
  187. easydiffraction-0.17.0/src/easydiffraction/analysis/fit_helpers/metrics.py +202 -0
  188. easydiffraction-0.17.0/src/easydiffraction/analysis/fit_helpers/reporting.py +278 -0
  189. easydiffraction-0.17.0/src/easydiffraction/analysis/fit_helpers/tracking.py +756 -0
  190. easydiffraction-0.17.0/src/easydiffraction/analysis/fitting.py +351 -0
  191. easydiffraction-0.17.0/src/easydiffraction/analysis/minimizers/__init__.py +13 -0
  192. easydiffraction-0.17.0/src/easydiffraction/analysis/minimizers/base.py +424 -0
  193. easydiffraction-0.17.0/src/easydiffraction/analysis/minimizers/bumps.py +481 -0
  194. easydiffraction-0.17.0/src/easydiffraction/analysis/minimizers/bumps_dream.py +1025 -0
  195. easydiffraction-0.17.0/src/easydiffraction/analysis/minimizers/enums.py +62 -0
  196. easydiffraction-0.17.0/src/easydiffraction/analysis/sequential.py +1337 -0
  197. easydiffraction-0.17.0/src/easydiffraction/core/__init__.py +4 -0
  198. easydiffraction-0.17.0/src/easydiffraction/core/category.py +276 -0
  199. easydiffraction-0.17.0/src/easydiffraction/core/category_owner.py +76 -0
  200. easydiffraction-0.17.0/src/easydiffraction/core/collection.py +183 -0
  201. easydiffraction-0.17.0/src/easydiffraction/core/datablock.py +131 -0
  202. easydiffraction-0.17.0/src/easydiffraction/core/guard.py +270 -0
  203. easydiffraction-0.17.0/src/easydiffraction/core/identity.py +85 -0
  204. easydiffraction-0.17.0/src/easydiffraction/core/singleton.py +139 -0
  205. easydiffraction-0.17.0/src/easydiffraction/core/validation.py +344 -0
  206. easydiffraction-0.17.0/src/easydiffraction/core/variable.py +676 -0
  207. easydiffraction-0.17.0/src/easydiffraction/crystallography/crystallography.py +651 -0
  208. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/background/chebyshev.py +186 -0
  209. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/background/line_segment.py +191 -0
  210. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/calculation/default.py +106 -0
  211. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/data/__init__.py +6 -0
  212. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py +706 -0
  213. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/data/factory.py +33 -0
  214. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/data/total_pd.py +379 -0
  215. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/diffrn/default.py +136 -0
  216. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/excluded_regions/default.py +179 -0
  217. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/experiment_type/default.py +142 -0
  218. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/extinction/becker_coppens.py +133 -0
  219. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/instrument/base.py +27 -0
  220. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/linked_crystal/default.py +89 -0
  221. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/linked_phases/default.py +99 -0
  222. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/peak/base.py +40 -0
  223. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/refln/__init__.py +10 -0
  224. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/refln/bragg_pd.py +302 -0
  225. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/refln/bragg_sc.py +438 -0
  226. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/refln/factory.py +39 -0
  227. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/collection.py +155 -0
  228. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/item/base.py +650 -0
  229. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/item/bragg_pd.py +243 -0
  230. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/item/bragg_sc.py +164 -0
  231. easydiffraction-0.17.0/src/easydiffraction/datablocks/structure/categories/atom_site_aniso/default.py +241 -0
  232. easydiffraction-0.17.0/src/easydiffraction/datablocks/structure/categories/atom_sites/default.py +691 -0
  233. easydiffraction-0.17.0/src/easydiffraction/datablocks/structure/categories/cell/default.py +243 -0
  234. easydiffraction-0.17.0/src/easydiffraction/datablocks/structure/categories/space_group/default.py +163 -0
  235. easydiffraction-0.17.0/src/easydiffraction/display/plotters/ascii.py +336 -0
  236. easydiffraction-0.17.0/src/easydiffraction/display/plotters/base.py +371 -0
  237. easydiffraction-0.17.0/src/easydiffraction/display/plotters/plotly.py +1857 -0
  238. easydiffraction-0.17.0/src/easydiffraction/display/plotting.py +5973 -0
  239. easydiffraction-0.17.0/src/easydiffraction/display/progress.py +491 -0
  240. easydiffraction-0.17.0/src/easydiffraction/display/tablers/base.py +149 -0
  241. easydiffraction-0.17.0/src/easydiffraction/display/tablers/pandas.py +278 -0
  242. easydiffraction-0.17.0/src/easydiffraction/display/tablers/rich.py +179 -0
  243. easydiffraction-0.17.0/src/easydiffraction/display/tables.py +164 -0
  244. easydiffraction-0.17.0/src/easydiffraction/io/ascii.py +271 -0
  245. easydiffraction-0.17.0/src/easydiffraction/io/cif/serialize.py +1006 -0
  246. easydiffraction-0.17.0/src/easydiffraction/io/results_sidecar.py +652 -0
  247. easydiffraction-0.17.0/src/easydiffraction/project/categories/info/__init__.py +8 -0
  248. easydiffraction-0.17.0/src/easydiffraction/project/categories/info/default.py +175 -0
  249. easydiffraction-0.17.0/src/easydiffraction/project/categories/info/factory.py +17 -0
  250. easydiffraction-0.17.0/src/easydiffraction/project/categories/rendering/__init__.py +8 -0
  251. easydiffraction-0.17.0/src/easydiffraction/project/categories/rendering/default.py +165 -0
  252. easydiffraction-0.17.0/src/easydiffraction/project/categories/rendering/factory.py +17 -0
  253. easydiffraction-0.17.0/src/easydiffraction/project/categories/verbosity/__init__.py +8 -0
  254. easydiffraction-0.17.0/src/easydiffraction/project/categories/verbosity/default.py +55 -0
  255. easydiffraction-0.17.0/src/easydiffraction/project/categories/verbosity/factory.py +17 -0
  256. easydiffraction-0.17.0/src/easydiffraction/project/display.py +849 -0
  257. easydiffraction-0.17.0/src/easydiffraction/project/project.py +621 -0
  258. easydiffraction-0.17.0/src/easydiffraction/project/project_config.py +55 -0
  259. easydiffraction-0.17.0/src/easydiffraction/project/project_info.py +9 -0
  260. easydiffraction-0.17.0/src/easydiffraction/summary/summary.py +245 -0
  261. easydiffraction-0.17.0/src/easydiffraction/utils/environment.py +261 -0
  262. easydiffraction-0.17.0/src/easydiffraction/utils/logging.py +733 -0
  263. easydiffraction-0.17.0/src/easydiffraction/utils/utils.py +975 -0
  264. easydiffraction-0.17.0/tests/functional/test_fitting_workflow.py +189 -0
  265. easydiffraction-0.17.0/tests/functional/test_project_lifecycle.py +118 -0
  266. easydiffraction-0.17.0/tests/functional/test_structure_workflow.py +239 -0
  267. easydiffraction-0.17.0/tests/functional/test_switchable_categories.py +65 -0
  268. easydiffraction-0.17.0/tests/integration/fitting/conftest.py +90 -0
  269. easydiffraction-0.17.0/tests/integration/fitting/test_analysis_and_fit_category_support.py +338 -0
  270. easydiffraction-0.17.0/tests/integration/fitting/test_analysis_display.py +76 -0
  271. easydiffraction-0.17.0/tests/integration/fitting/test_aniso_adp_fitting.py +106 -0
  272. easydiffraction-0.17.0/tests/integration/fitting/test_bayesian_dream.py +197 -0
  273. easydiffraction-0.17.0/tests/integration/fitting/test_bayesian_helper_support.py +670 -0
  274. easydiffraction-0.17.0/tests/integration/fitting/test_bayesian_tracker_and_base.py +511 -0
  275. easydiffraction-0.17.0/tests/integration/fitting/test_bumps_dream_support.py +711 -0
  276. easydiffraction-0.17.0/tests/integration/fitting/test_cli_entrypoints.py +182 -0
  277. easydiffraction-0.17.0/tests/integration/fitting/test_exploration_help.py +169 -0
  278. easydiffraction-0.17.0/tests/integration/fitting/test_multi.py +236 -0
  279. easydiffraction-0.17.0/tests/integration/fitting/test_plotting.py +29 -0
  280. easydiffraction-0.17.0/tests/integration/fitting/test_powder-diffraction_constant-wavelength.py +536 -0
  281. easydiffraction-0.17.0/tests/integration/fitting/test_powder-diffraction_joint-fit.py +323 -0
  282. easydiffraction-0.17.0/tests/integration/fitting/test_powder-diffraction_time-of-flight.py +225 -0
  283. easydiffraction-0.17.0/tests/integration/fitting/test_project_load.py +254 -0
  284. easydiffraction-0.17.0/tests/integration/fitting/test_sequential.py +398 -0
  285. easydiffraction-0.17.0/tests/integration/scipp-analysis/dream/test_package_import.py +59 -0
  286. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/calculators/test_cryspy.py +204 -0
  287. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/fitting/test_default.py +37 -0
  288. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/fitting/test_factory.py +24 -0
  289. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/sequential_fit/test_default.py +35 -0
  290. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/sequential_fit/test_factory.py +24 -0
  291. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/sequential_fit_extract/test_default.py +66 -0
  292. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/sequential_fit_extract/test_factory.py +32 -0
  293. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/test_bayesian_convergence.py +17 -0
  294. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/test_bayesian_distribution_caches.py +17 -0
  295. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/test_bayesian_pair_caches.py +15 -0
  296. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/test_bayesian_parameter_posteriors.py +17 -0
  297. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/test_bayesian_predictive_datasets.py +17 -0
  298. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/test_bayesian_result.py +13 -0
  299. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/test_bayesian_sampler.py +13 -0
  300. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/test_constraints.py +63 -0
  301. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/test_deterministic_result.py +17 -0
  302. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/test_fit.py +85 -0
  303. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/test_fit_parameter_correlations.py +17 -0
  304. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/test_fit_parameters.py +13 -0
  305. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/test_fit_result.py +13 -0
  306. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/test_fit_state.py +207 -0
  307. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/test_joint_fit_experiments.py +17 -0
  308. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/fit_helpers/test_bayesian.py +385 -0
  309. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/fit_helpers/test_reporting.py +127 -0
  310. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/fit_helpers/test_tracking.py +126 -0
  311. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/minimizers/test_base.py +291 -0
  312. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/minimizers/test_bumps.py +548 -0
  313. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/minimizers/test_bumps_dream.py +384 -0
  314. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/minimizers/test_dfols.py +69 -0
  315. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/minimizers/test_enums.py +39 -0
  316. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/minimizers/test_factory.py +87 -0
  317. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/minimizers/test_lmfit.py +114 -0
  318. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/test_analysis.py +301 -0
  319. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/test_analysis_access_params.py +297 -0
  320. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/test_analysis_coverage.py +306 -0
  321. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/test_enums.py +36 -0
  322. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/test_fitting.py +285 -0
  323. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/test_sequential.py +728 -0
  324. easydiffraction-0.17.0/tests/unit/easydiffraction/core/test_category.py +255 -0
  325. easydiffraction-0.17.0/tests/unit/easydiffraction/core/test_category_owner.py +134 -0
  326. easydiffraction-0.17.0/tests/unit/easydiffraction/core/test_datablock.py +195 -0
  327. easydiffraction-0.17.0/tests/unit/easydiffraction/core/test_parameters.py +241 -0
  328. easydiffraction-0.17.0/tests/unit/easydiffraction/crystallography/test_crystallography_coverage.py +156 -0
  329. easydiffraction-0.17.0/tests/unit/easydiffraction/crystallography/test_crystallography_wyckoff.py +86 -0
  330. easydiffraction-0.17.0/tests/unit/easydiffraction/datablocks/experiment/categories/data/test_bragg_pd.py +169 -0
  331. easydiffraction-0.17.0/tests/unit/easydiffraction/datablocks/experiment/categories/data/test_factory.py +68 -0
  332. easydiffraction-0.17.0/tests/unit/easydiffraction/datablocks/experiment/categories/data/test_total_pd.py +116 -0
  333. easydiffraction-0.17.0/tests/unit/easydiffraction/datablocks/experiment/categories/refln/test_bragg_pd.py +196 -0
  334. easydiffraction-0.17.0/tests/unit/easydiffraction/datablocks/experiment/categories/refln/test_bragg_sc.py +110 -0
  335. easydiffraction-0.17.0/tests/unit/easydiffraction/datablocks/experiment/categories/refln/test_factory.py +67 -0
  336. easydiffraction-0.17.0/tests/unit/easydiffraction/datablocks/experiment/item/test_bragg_pd.py +249 -0
  337. easydiffraction-0.17.0/tests/unit/easydiffraction/datablocks/experiment/item/test_bragg_sc_coverage.py +142 -0
  338. easydiffraction-0.17.0/tests/unit/easydiffraction/display/plotters/test_ascii.py +308 -0
  339. easydiffraction-0.17.0/tests/unit/easydiffraction/display/plotters/test_plotly.py +970 -0
  340. easydiffraction-0.17.0/tests/unit/easydiffraction/display/tablers/test_pandas.py +47 -0
  341. easydiffraction-0.17.0/tests/unit/easydiffraction/display/tablers/test_rich.py +44 -0
  342. easydiffraction-0.17.0/tests/unit/easydiffraction/display/test_plotting.py +2470 -0
  343. easydiffraction-0.17.0/tests/unit/easydiffraction/display/test_plotting_coverage.py +573 -0
  344. easydiffraction-0.17.0/tests/unit/easydiffraction/display/test_progress.py +315 -0
  345. easydiffraction-0.17.0/tests/unit/easydiffraction/display/test_tables.py +90 -0
  346. easydiffraction-0.17.0/tests/unit/easydiffraction/io/cif/test_serialize.py +124 -0
  347. easydiffraction-0.17.0/tests/unit/easydiffraction/io/cif/test_serialize_category_owner_baseline.py +98 -0
  348. easydiffraction-0.17.0/tests/unit/easydiffraction/io/cif/test_serialize_more.py +202 -0
  349. easydiffraction-0.17.0/tests/unit/easydiffraction/io/test_ascii.py +298 -0
  350. easydiffraction-0.17.0/tests/unit/easydiffraction/io/test_results_sidecar.py +138 -0
  351. easydiffraction-0.17.0/tests/unit/easydiffraction/project/categories/info/test_default.py +63 -0
  352. easydiffraction-0.17.0/tests/unit/easydiffraction/project/categories/info/test_factory.py +32 -0
  353. easydiffraction-0.17.0/tests/unit/easydiffraction/project/categories/rendering/test_default.py +69 -0
  354. easydiffraction-0.17.0/tests/unit/easydiffraction/project/categories/rendering/test_factory.py +23 -0
  355. easydiffraction-0.17.0/tests/unit/easydiffraction/project/categories/verbosity/test_default.py +44 -0
  356. easydiffraction-0.17.0/tests/unit/easydiffraction/project/categories/verbosity/test_factory.py +25 -0
  357. easydiffraction-0.17.0/tests/unit/easydiffraction/project/test_display.py +668 -0
  358. easydiffraction-0.17.0/tests/unit/easydiffraction/project/test_project.py +123 -0
  359. easydiffraction-0.17.0/tests/unit/easydiffraction/project/test_project_config.py +129 -0
  360. easydiffraction-0.17.0/tests/unit/easydiffraction/project/test_project_load.py +318 -0
  361. easydiffraction-0.17.0/tests/unit/easydiffraction/project/test_project_save.py +123 -0
  362. easydiffraction-0.17.0/tests/unit/easydiffraction/summary/test_summary.py +73 -0
  363. easydiffraction-0.17.0/tests/unit/easydiffraction/summary/test_summary_details.py +168 -0
  364. easydiffraction-0.17.0/tests/unit/easydiffraction/test___main__.py +260 -0
  365. easydiffraction-0.17.0/tests/unit/easydiffraction/utils/test_environment.py +127 -0
  366. easydiffraction-0.17.0/tests/unit/easydiffraction/utils/test_utils.py +393 -0
  367. easydiffraction-0.17.0/tests/unit/easydiffraction/utils/test_utils_coverage.py +504 -0
  368. easydiffraction-0.17.0/tests/unit/test_benchmark_tutorials.py +133 -0
  369. easydiffraction-0.17.0/tools/benchmark_tutorials.py +216 -0
  370. easydiffraction-0.17.0/tools/generate_package_docs.py +172 -0
  371. easydiffraction-0.17.0/tools/license_headers.py +321 -0
  372. easydiffraction-0.17.0/tools/param_consistency.py +680 -0
  373. easydiffraction-0.15.0/.copier-answers.yml +0 -27
  374. easydiffraction-0.15.0/.github/actions/download-artifact/action.yml +0 -50
  375. easydiffraction-0.15.0/.github/actions/github-script/action.yml +0 -19
  376. easydiffraction-0.15.0/.github/actions/setup-easyscience-bot/action.yml +0 -40
  377. easydiffraction-0.15.0/.github/actions/setup-pixi/action.yml +0 -44
  378. easydiffraction-0.15.0/.github/actions/upload-artifact/action.yml +0 -49
  379. easydiffraction-0.15.0/.github/actions/upload-codecov/action.yml +0 -42
  380. easydiffraction-0.15.0/.github/copilot-instructions.md +0 -211
  381. easydiffraction-0.15.0/.github/workflows/backmerge.yml +0 -114
  382. easydiffraction-0.15.0/.github/workflows/cleanup.yml +0 -89
  383. easydiffraction-0.15.0/.github/workflows/coverage.yml +0 -99
  384. easydiffraction-0.15.0/.github/workflows/dashboard.yml +0 -107
  385. easydiffraction-0.15.0/.github/workflows/docs.yml +0 -187
  386. easydiffraction-0.15.0/.github/workflows/issues-labels.yml +0 -56
  387. easydiffraction-0.15.0/.github/workflows/lint-format.yml +0 -127
  388. easydiffraction-0.15.0/.github/workflows/pr-labels.yml +0 -56
  389. easydiffraction-0.15.0/.github/workflows/pypi-publish.yml +0 -51
  390. easydiffraction-0.15.0/.github/workflows/pypi-test.yml +0 -94
  391. easydiffraction-0.15.0/.github/workflows/release-notes.yml +0 -76
  392. easydiffraction-0.15.0/.github/workflows/release-pr.yml +0 -58
  393. easydiffraction-0.15.0/.github/workflows/security.yml +0 -98
  394. easydiffraction-0.15.0/.github/workflows/test-trigger.yml +0 -45
  395. easydiffraction-0.15.0/.github/workflows/test.yml +0 -324
  396. easydiffraction-0.15.0/.github/workflows/tutorial-tests-colab.yaml +0 -45
  397. easydiffraction-0.15.0/.github/workflows/tutorial-tests-trigger.yml +0 -45
  398. easydiffraction-0.15.0/.github/workflows/tutorial-tests.yml +0 -67
  399. easydiffraction-0.15.0/.gitignore +0 -52
  400. easydiffraction-0.15.0/CONTRIBUTING.md +0 -446
  401. easydiffraction-0.15.0/PKG-INFO +0 -136
  402. easydiffraction-0.15.0/README.md +0 -53
  403. easydiffraction-0.15.0/codecov.yml +0 -13
  404. easydiffraction-0.15.0/docs/architecture/adp_implementation.md +0 -321
  405. easydiffraction-0.15.0/docs/architecture/architecture.md +0 -1430
  406. easydiffraction-0.15.0/docs/architecture/cryspy-dwf-bug.md +0 -126
  407. easydiffraction-0.15.0/docs/architecture/issues_closed.md +0 -135
  408. easydiffraction-0.15.0/docs/architecture/issues_open.md +0 -1504
  409. easydiffraction-0.15.0/docs/architecture/package-structure-full.md +0 -408
  410. easydiffraction-0.15.0/docs/architecture/package-structure-short.md +0 -220
  411. easydiffraction-0.15.0/docs/docs/cli/index.md +0 -90
  412. easydiffraction-0.15.0/docs/docs/installation-and-setup/index.md +0 -297
  413. easydiffraction-0.15.0/docs/docs/introduction/index.md +0 -74
  414. easydiffraction-0.15.0/docs/docs/tutorials/ed-1.ipynb +0 -283
  415. easydiffraction-0.15.0/docs/docs/tutorials/ed-1.py +0 -110
  416. easydiffraction-0.15.0/docs/docs/tutorials/ed-10.ipynb +0 -242
  417. easydiffraction-0.15.0/docs/docs/tutorials/ed-10.py +0 -92
  418. easydiffraction-0.15.0/docs/docs/tutorials/ed-11.ipynb +0 -273
  419. easydiffraction-0.15.0/docs/docs/tutorials/ed-11.py +0 -104
  420. easydiffraction-0.15.0/docs/docs/tutorials/ed-12.ipynb +0 -313
  421. easydiffraction-0.15.0/docs/docs/tutorials/ed-12.py +0 -123
  422. easydiffraction-0.15.0/docs/docs/tutorials/ed-13.ipynb +0 -2675
  423. easydiffraction-0.15.0/docs/docs/tutorials/ed-13.py +0 -1516
  424. easydiffraction-0.15.0/docs/docs/tutorials/ed-14.ipynb +0 -451
  425. easydiffraction-0.15.0/docs/docs/tutorials/ed-14.py +0 -159
  426. easydiffraction-0.15.0/docs/docs/tutorials/ed-15.ipynb +0 -410
  427. easydiffraction-0.15.0/docs/docs/tutorials/ed-15.py +0 -132
  428. easydiffraction-0.15.0/docs/docs/tutorials/ed-16.ipynb +0 -615
  429. easydiffraction-0.15.0/docs/docs/tutorials/ed-16.py +0 -251
  430. easydiffraction-0.15.0/docs/docs/tutorials/ed-17.ipynb +0 -828
  431. easydiffraction-0.15.0/docs/docs/tutorials/ed-17.py +0 -406
  432. easydiffraction-0.15.0/docs/docs/tutorials/ed-18.ipynb +0 -180
  433. easydiffraction-0.15.0/docs/docs/tutorials/ed-18.py +0 -56
  434. easydiffraction-0.15.0/docs/docs/tutorials/ed-2.ipynb +0 -533
  435. easydiffraction-0.15.0/docs/docs/tutorials/ed-2.py +0 -229
  436. easydiffraction-0.15.0/docs/docs/tutorials/ed-20.ipynb +0 -816
  437. easydiffraction-0.15.0/docs/docs/tutorials/ed-20.py +0 -381
  438. easydiffraction-0.15.0/docs/docs/tutorials/ed-3.ipynb +0 -1654
  439. easydiffraction-0.15.0/docs/docs/tutorials/ed-3.py +0 -655
  440. easydiffraction-0.15.0/docs/docs/tutorials/ed-4.ipynb +0 -717
  441. easydiffraction-0.15.0/docs/docs/tutorials/ed-4.py +0 -325
  442. easydiffraction-0.15.0/docs/docs/tutorials/ed-5.ipynb +0 -664
  443. easydiffraction-0.15.0/docs/docs/tutorials/ed-5.py +0 -300
  444. easydiffraction-0.15.0/docs/docs/tutorials/ed-6.ipynb +0 -848
  445. easydiffraction-0.15.0/docs/docs/tutorials/ed-6.py +0 -350
  446. easydiffraction-0.15.0/docs/docs/tutorials/ed-7.ipynb +0 -934
  447. easydiffraction-0.15.0/docs/docs/tutorials/ed-7.py +0 -364
  448. easydiffraction-0.15.0/docs/docs/tutorials/ed-8.ipynb +0 -732
  449. easydiffraction-0.15.0/docs/docs/tutorials/ed-8.py +0 -367
  450. easydiffraction-0.15.0/docs/docs/tutorials/ed-9.ipynb +0 -695
  451. easydiffraction-0.15.0/docs/docs/tutorials/ed-9.py +0 -304
  452. easydiffraction-0.15.0/docs/docs/tutorials/index.json +0 -135
  453. easydiffraction-0.15.0/docs/docs/tutorials/index.md +0 -107
  454. easydiffraction-0.15.0/docs/docs/user-guide/analysis-workflow/analysis.md +0 -376
  455. easydiffraction-0.15.0/docs/docs/user-guide/analysis-workflow/project.md +0 -271
  456. easydiffraction-0.15.0/docs/docs/user-guide/first-steps.md +0 -190
  457. easydiffraction-0.15.0/docs/mkdocs.yml +0 -234
  458. easydiffraction-0.15.0/pixi.lock +0 -12149
  459. easydiffraction-0.15.0/pixi.toml +0 -294
  460. easydiffraction-0.15.0/pyproject.toml +0 -415
  461. easydiffraction-0.15.0/src/easydiffraction/__init__.py +0 -18
  462. easydiffraction-0.15.0/src/easydiffraction/__main__.py +0 -110
  463. easydiffraction-0.15.0/src/easydiffraction/analysis/__init__.py +0 -2
  464. easydiffraction-0.15.0/src/easydiffraction/analysis/analysis.py +0 -885
  465. easydiffraction-0.15.0/src/easydiffraction/analysis/calculators/base.py +0 -62
  466. easydiffraction-0.15.0/src/easydiffraction/analysis/calculators/cryspy.py +0 -1097
  467. easydiffraction-0.15.0/src/easydiffraction/analysis/categories/aliases/default.py +0 -143
  468. easydiffraction-0.15.0/src/easydiffraction/analysis/categories/constraints/default.py +0 -134
  469. easydiffraction-0.15.0/src/easydiffraction/analysis/categories/fit/__init__.py +0 -6
  470. easydiffraction-0.15.0/src/easydiffraction/analysis/categories/fit/default.py +0 -200
  471. easydiffraction-0.15.0/src/easydiffraction/analysis/categories/fit/enums.py +0 -30
  472. easydiffraction-0.15.0/src/easydiffraction/analysis/categories/fit/factory.py +0 -17
  473. easydiffraction-0.15.0/src/easydiffraction/analysis/categories/joint_fit_experiments/__init__.py +0 -5
  474. easydiffraction-0.15.0/src/easydiffraction/analysis/categories/joint_fit_experiments/default.py +0 -100
  475. easydiffraction-0.15.0/src/easydiffraction/analysis/categories/joint_fit_experiments/factory.py +0 -17
  476. easydiffraction-0.15.0/src/easydiffraction/analysis/fit_helpers/metrics.py +0 -199
  477. easydiffraction-0.15.0/src/easydiffraction/analysis/fit_helpers/reporting.py +0 -250
  478. easydiffraction-0.15.0/src/easydiffraction/analysis/fit_helpers/tracking.py +0 -290
  479. easydiffraction-0.15.0/src/easydiffraction/analysis/fitting.py +0 -240
  480. easydiffraction-0.15.0/src/easydiffraction/analysis/minimizers/__init__.py +0 -11
  481. easydiffraction-0.15.0/src/easydiffraction/analysis/minimizers/base.py +0 -311
  482. easydiffraction-0.15.0/src/easydiffraction/analysis/minimizers/bumps.py +0 -266
  483. easydiffraction-0.15.0/src/easydiffraction/analysis/minimizers/enums.py +0 -51
  484. easydiffraction-0.15.0/src/easydiffraction/analysis/sequential.py +0 -886
  485. easydiffraction-0.15.0/src/easydiffraction/core/category.py +0 -258
  486. easydiffraction-0.15.0/src/easydiffraction/core/collection.py +0 -170
  487. easydiffraction-0.15.0/src/easydiffraction/core/datablock.py +0 -203
  488. easydiffraction-0.15.0/src/easydiffraction/core/guard.py +0 -238
  489. easydiffraction-0.15.0/src/easydiffraction/core/identity.py +0 -78
  490. easydiffraction-0.15.0/src/easydiffraction/core/singleton.py +0 -139
  491. easydiffraction-0.15.0/src/easydiffraction/core/validation.py +0 -342
  492. easydiffraction-0.15.0/src/easydiffraction/core/variable.py +0 -510
  493. easydiffraction-0.15.0/src/easydiffraction/crystallography/crystallography.py +0 -651
  494. easydiffraction-0.15.0/src/easydiffraction/datablocks/experiment/categories/background/chebyshev.py +0 -186
  495. easydiffraction-0.15.0/src/easydiffraction/datablocks/experiment/categories/background/line_segment.py +0 -191
  496. easydiffraction-0.15.0/src/easydiffraction/datablocks/experiment/categories/calculation/default.py +0 -106
  497. easydiffraction-0.15.0/src/easydiffraction/datablocks/experiment/categories/data/__init__.py +0 -7
  498. easydiffraction-0.15.0/src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py +0 -638
  499. easydiffraction-0.15.0/src/easydiffraction/datablocks/experiment/categories/data/bragg_sc.py +0 -438
  500. easydiffraction-0.15.0/src/easydiffraction/datablocks/experiment/categories/data/factory.py +0 -37
  501. easydiffraction-0.15.0/src/easydiffraction/datablocks/experiment/categories/data/total_pd.py +0 -379
  502. easydiffraction-0.15.0/src/easydiffraction/datablocks/experiment/categories/diffrn/default.py +0 -136
  503. easydiffraction-0.15.0/src/easydiffraction/datablocks/experiment/categories/excluded_regions/default.py +0 -178
  504. easydiffraction-0.15.0/src/easydiffraction/datablocks/experiment/categories/experiment_type/default.py +0 -142
  505. easydiffraction-0.15.0/src/easydiffraction/datablocks/experiment/categories/extinction/becker_coppens.py +0 -133
  506. easydiffraction-0.15.0/src/easydiffraction/datablocks/experiment/categories/instrument/base.py +0 -26
  507. easydiffraction-0.15.0/src/easydiffraction/datablocks/experiment/categories/linked_crystal/default.py +0 -89
  508. easydiffraction-0.15.0/src/easydiffraction/datablocks/experiment/categories/linked_phases/default.py +0 -99
  509. easydiffraction-0.15.0/src/easydiffraction/datablocks/experiment/categories/peak/base.py +0 -39
  510. easydiffraction-0.15.0/src/easydiffraction/datablocks/experiment/collection.py +0 -155
  511. easydiffraction-0.15.0/src/easydiffraction/datablocks/experiment/item/base.py +0 -603
  512. easydiffraction-0.15.0/src/easydiffraction/datablocks/experiment/item/bragg_pd.py +0 -195
  513. easydiffraction-0.15.0/src/easydiffraction/datablocks/experiment/item/bragg_sc.py +0 -164
  514. easydiffraction-0.15.0/src/easydiffraction/datablocks/structure/categories/atom_site_aniso/default.py +0 -241
  515. easydiffraction-0.15.0/src/easydiffraction/datablocks/structure/categories/atom_sites/default.py +0 -691
  516. easydiffraction-0.15.0/src/easydiffraction/datablocks/structure/categories/cell/default.py +0 -243
  517. easydiffraction-0.15.0/src/easydiffraction/datablocks/structure/categories/space_group/default.py +0 -163
  518. easydiffraction-0.15.0/src/easydiffraction/display/plotters/ascii.py +0 -208
  519. easydiffraction-0.15.0/src/easydiffraction/display/plotters/base.py +0 -293
  520. easydiffraction-0.15.0/src/easydiffraction/display/plotters/plotly.py +0 -695
  521. easydiffraction-0.15.0/src/easydiffraction/display/plotting.py +0 -1369
  522. easydiffraction-0.15.0/src/easydiffraction/display/tablers/base.py +0 -126
  523. easydiffraction-0.15.0/src/easydiffraction/display/tablers/pandas.py +0 -246
  524. easydiffraction-0.15.0/src/easydiffraction/display/tablers/rich.py +0 -177
  525. easydiffraction-0.15.0/src/easydiffraction/display/tables.py +0 -134
  526. easydiffraction-0.15.0/src/easydiffraction/io/ascii.py +0 -260
  527. easydiffraction-0.15.0/src/easydiffraction/io/cif/serialize.py +0 -734
  528. easydiffraction-0.15.0/src/easydiffraction/project/categories/display/__init__.py +0 -8
  529. easydiffraction-0.15.0/src/easydiffraction/project/categories/display/default.py +0 -117
  530. easydiffraction-0.15.0/src/easydiffraction/project/categories/display/factory.py +0 -17
  531. easydiffraction-0.15.0/src/easydiffraction/project/project.py +0 -471
  532. easydiffraction-0.15.0/src/easydiffraction/project/project_info.py +0 -134
  533. easydiffraction-0.15.0/src/easydiffraction/summary/__init__.py +0 -2
  534. easydiffraction-0.15.0/src/easydiffraction/summary/summary.py +0 -240
  535. easydiffraction-0.15.0/src/easydiffraction/utils/environment.py +0 -167
  536. easydiffraction-0.15.0/src/easydiffraction/utils/logging.py +0 -733
  537. easydiffraction-0.15.0/src/easydiffraction/utils/utils.py +0 -772
  538. easydiffraction-0.15.0/tests/functional/test_fitting_workflow.py +0 -185
  539. easydiffraction-0.15.0/tests/functional/test_project_lifecycle.py +0 -118
  540. easydiffraction-0.15.0/tests/functional/test_structure_workflow.py +0 -239
  541. easydiffraction-0.15.0/tests/functional/test_switchable_categories.py +0 -65
  542. easydiffraction-0.15.0/tests/integration/fitting/conftest.py +0 -89
  543. easydiffraction-0.15.0/tests/integration/fitting/test_analysis_display.py +0 -76
  544. easydiffraction-0.15.0/tests/integration/fitting/test_aniso_adp_fitting.py +0 -105
  545. easydiffraction-0.15.0/tests/integration/fitting/test_exploration_help.py +0 -148
  546. easydiffraction-0.15.0/tests/integration/fitting/test_multi.py +0 -236
  547. easydiffraction-0.15.0/tests/integration/fitting/test_plotting.py +0 -29
  548. easydiffraction-0.15.0/tests/integration/fitting/test_powder-diffraction_constant-wavelength.py +0 -536
  549. easydiffraction-0.15.0/tests/integration/fitting/test_powder-diffraction_joint-fit.py +0 -323
  550. easydiffraction-0.15.0/tests/integration/fitting/test_powder-diffraction_time-of-flight.py +0 -225
  551. easydiffraction-0.15.0/tests/integration/fitting/test_project_load.py +0 -246
  552. easydiffraction-0.15.0/tests/integration/fitting/test_sequential.py +0 -369
  553. easydiffraction-0.15.0/tests/integration/scipp-analysis/dream/test_package_import.py +0 -78
  554. easydiffraction-0.15.0/tests/unit/easydiffraction/analysis/calculators/test_cryspy.py +0 -116
  555. easydiffraction-0.15.0/tests/unit/easydiffraction/analysis/categories/test_constraints.py +0 -16
  556. easydiffraction-0.15.0/tests/unit/easydiffraction/analysis/categories/test_fit.py +0 -92
  557. easydiffraction-0.15.0/tests/unit/easydiffraction/analysis/categories/test_joint_fit_experiments.py +0 -17
  558. easydiffraction-0.15.0/tests/unit/easydiffraction/analysis/fit_helpers/test_reporting.py +0 -61
  559. easydiffraction-0.15.0/tests/unit/easydiffraction/analysis/fit_helpers/test_tracking.py +0 -45
  560. easydiffraction-0.15.0/tests/unit/easydiffraction/analysis/minimizers/test_base.py +0 -121
  561. easydiffraction-0.15.0/tests/unit/easydiffraction/analysis/minimizers/test_bumps.py +0 -415
  562. easydiffraction-0.15.0/tests/unit/easydiffraction/analysis/minimizers/test_dfols.py +0 -65
  563. easydiffraction-0.15.0/tests/unit/easydiffraction/analysis/minimizers/test_enums.py +0 -32
  564. easydiffraction-0.15.0/tests/unit/easydiffraction/analysis/minimizers/test_factory.py +0 -77
  565. easydiffraction-0.15.0/tests/unit/easydiffraction/analysis/minimizers/test_lmfit.py +0 -79
  566. easydiffraction-0.15.0/tests/unit/easydiffraction/analysis/test_analysis.py +0 -122
  567. easydiffraction-0.15.0/tests/unit/easydiffraction/analysis/test_analysis_access_params.py +0 -84
  568. easydiffraction-0.15.0/tests/unit/easydiffraction/analysis/test_analysis_coverage.py +0 -196
  569. easydiffraction-0.15.0/tests/unit/easydiffraction/analysis/test_fitting.py +0 -103
  570. easydiffraction-0.15.0/tests/unit/easydiffraction/analysis/test_sequential.py +0 -302
  571. easydiffraction-0.15.0/tests/unit/easydiffraction/core/test_category.py +0 -102
  572. easydiffraction-0.15.0/tests/unit/easydiffraction/core/test_datablock.py +0 -136
  573. easydiffraction-0.15.0/tests/unit/easydiffraction/core/test_parameters.py +0 -157
  574. easydiffraction-0.15.0/tests/unit/easydiffraction/crystallography/test_crystallography_coverage.py +0 -152
  575. easydiffraction-0.15.0/tests/unit/easydiffraction/crystallography/test_crystallography_wyckoff.py +0 -86
  576. easydiffraction-0.15.0/tests/unit/easydiffraction/datablocks/experiment/categories/data/test_bragg_pd.py +0 -144
  577. easydiffraction-0.15.0/tests/unit/easydiffraction/datablocks/experiment/categories/data/test_bragg_sc.py +0 -92
  578. easydiffraction-0.15.0/tests/unit/easydiffraction/datablocks/experiment/categories/data/test_factory.py +0 -79
  579. easydiffraction-0.15.0/tests/unit/easydiffraction/datablocks/experiment/categories/data/test_total_pd.py +0 -91
  580. easydiffraction-0.15.0/tests/unit/easydiffraction/datablocks/experiment/item/test_bragg_pd.py +0 -73
  581. easydiffraction-0.15.0/tests/unit/easydiffraction/datablocks/experiment/item/test_bragg_sc_coverage.py +0 -142
  582. easydiffraction-0.15.0/tests/unit/easydiffraction/datablocks/structure/categories/__init__.py +0 -2
  583. easydiffraction-0.15.0/tests/unit/easydiffraction/display/plotters/test_ascii.py +0 -50
  584. easydiffraction-0.15.0/tests/unit/easydiffraction/display/plotters/test_plotly.py +0 -211
  585. easydiffraction-0.15.0/tests/unit/easydiffraction/display/tablers/__init__.py +0 -2
  586. easydiffraction-0.15.0/tests/unit/easydiffraction/display/tablers/test_pandas.py +0 -35
  587. easydiffraction-0.15.0/tests/unit/easydiffraction/display/tablers/test_rich.py +0 -44
  588. easydiffraction-0.15.0/tests/unit/easydiffraction/display/test_plotting.py +0 -513
  589. easydiffraction-0.15.0/tests/unit/easydiffraction/display/test_plotting_coverage.py +0 -521
  590. easydiffraction-0.15.0/tests/unit/easydiffraction/display/test_tables.py +0 -61
  591. easydiffraction-0.15.0/tests/unit/easydiffraction/io/cif/test_serialize.py +0 -124
  592. easydiffraction-0.15.0/tests/unit/easydiffraction/io/cif/test_serialize_more.py +0 -146
  593. easydiffraction-0.15.0/tests/unit/easydiffraction/io/test_ascii.py +0 -253
  594. easydiffraction-0.15.0/tests/unit/easydiffraction/project/categories/display/test_default.py +0 -55
  595. easydiffraction-0.15.0/tests/unit/easydiffraction/project/categories/display/test_factory.py +0 -23
  596. easydiffraction-0.15.0/tests/unit/easydiffraction/project/test_project.py +0 -51
  597. easydiffraction-0.15.0/tests/unit/easydiffraction/project/test_project_load.py +0 -153
  598. easydiffraction-0.15.0/tests/unit/easydiffraction/project/test_project_save.py +0 -40
  599. easydiffraction-0.15.0/tests/unit/easydiffraction/summary/test_summary.py +0 -58
  600. easydiffraction-0.15.0/tests/unit/easydiffraction/summary/test_summary_details.py +0 -168
  601. easydiffraction-0.15.0/tests/unit/easydiffraction/test___main__.py +0 -175
  602. easydiffraction-0.15.0/tests/unit/easydiffraction/utils/test_environment.py +0 -86
  603. easydiffraction-0.15.0/tests/unit/easydiffraction/utils/test_utils.py +0 -366
  604. easydiffraction-0.15.0/tests/unit/easydiffraction/utils/test_utils_coverage.py +0 -468
  605. easydiffraction-0.15.0/tools/generate_package_docs.py +0 -172
  606. easydiffraction-0.15.0/tools/license_headers.py +0 -315
  607. easydiffraction-0.15.0/tools/param_consistency.py +0 -680
  608. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/.badgery.yaml +0 -0
  609. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/.codefactorignore +0 -0
  610. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/.github/configs/pages-deployment.json +0 -0
  611. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/.github/configs/rulesets-develop.json +0 -0
  612. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/.github/configs/rulesets-gh-pages.json +0 -0
  613. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/.github/configs/rulesets-master.json +0 -0
  614. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/.github/scripts/backmerge-conflict-issue.js +0 -0
  615. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/.pre-commit-config.yaml +0 -0
  616. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/.prettierignore +0 -0
  617. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/LICENSE +0 -0
  618. {easydiffraction-0.15.0/docs/architecture → easydiffraction-0.17.0/docs/dev/roadmap}/ROADMAP.md +0 -0
  619. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/api-reference/analysis.md +0 -0
  620. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/api-reference/core.md +0 -0
  621. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/api-reference/crystallography.md +0 -0
  622. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/api-reference/datablocks/experiment.md +0 -0
  623. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/api-reference/datablocks/structure.md +0 -0
  624. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/api-reference/display.md +0 -0
  625. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/api-reference/index.md +0 -0
  626. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/api-reference/io.md +0 -0
  627. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/api-reference/project.md +0 -0
  628. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/api-reference/summary.md +0 -0
  629. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/api-reference/utils.md +0 -0
  630. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/assets/images/favicon.png +0 -0
  631. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/assets/images/logo_dark.svg +0 -0
  632. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/assets/images/logo_light.svg +0 -0
  633. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/assets/images/user-guide/data-acquisition_2d-raw-data.jpg +0 -0
  634. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/assets/images/user-guide/data-acquisition_instrument.png +0 -0
  635. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/assets/images/user-guide/data-analysis_model.png +0 -0
  636. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/assets/images/user-guide/data-analysis_refinement.png +0 -0
  637. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/assets/images/user-guide/data-reduction_1d-pattern.png +0 -0
  638. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/assets/javascripts/extra.js +0 -0
  639. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/assets/javascripts/mathjax.js +0 -0
  640. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/assets/stylesheets/extra.css +0 -0
  641. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/index.md +0 -0
  642. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/user-guide/analysis-workflow/experiment.md +0 -0
  643. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/user-guide/analysis-workflow/index.md +0 -0
  644. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/user-guide/analysis-workflow/model.md +0 -0
  645. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/user-guide/analysis-workflow/summary.md +0 -0
  646. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/user-guide/concept.md +0 -0
  647. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/user-guide/data-format.md +0 -0
  648. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/user-guide/glossary.md +0 -0
  649. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/user-guide/index.md +0 -0
  650. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/user-guide/parameters/_diffrn_radiation.md +0 -0
  651. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/user-guide/parameters/_diffrn_radiation_wavelength.md +0 -0
  652. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/user-guide/parameters/_exptl_crystal.md +0 -0
  653. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/user-guide/parameters/_extinction.md +0 -0
  654. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/user-guide/parameters/_pd_calib.md +0 -0
  655. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/user-guide/parameters/atom_site.md +0 -0
  656. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/user-guide/parameters/background.md +0 -0
  657. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/user-guide/parameters/cell.md +0 -0
  658. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/user-guide/parameters/expt_type.md +0 -0
  659. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/user-guide/parameters/instrument.md +0 -0
  660. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/user-guide/parameters/linked_phases.md +0 -0
  661. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/user-guide/parameters/pd_meas.md +0 -0
  662. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/user-guide/parameters/peak.md +0 -0
  663. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/user-guide/parameters/space_group.md +0 -0
  664. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/docs/user-guide/parameters.md +0 -0
  665. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/includes/abbreviations.md +0 -0
  666. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/overrides/.icons/app.svg +0 -0
  667. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/overrides/.icons/easydiffraction.svg +0 -0
  668. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/overrides/.icons/easyscience.svg +0 -0
  669. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/overrides/.icons/google-colab.svg +0 -0
  670. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/overrides/main.html +0 -0
  671. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/docs/overrides/partials/logo.html +0 -0
  672. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/prettierrc.toml +0 -0
  673. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/analysis/calculators/__init__.py +0 -0
  674. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/analysis/calculators/crysfml.py +0 -0
  675. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/analysis/calculators/factory.py +0 -0
  676. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/analysis/calculators/pdffit.py +0 -0
  677. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/analysis/categories/aliases/__init__.py +0 -0
  678. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/analysis/categories/aliases/factory.py +0 -0
  679. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/analysis/categories/constraints/__init__.py +0 -0
  680. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/analysis/categories/constraints/factory.py +0 -0
  681. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/analysis/minimizers/bumps_amoeba.py +0 -0
  682. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/analysis/minimizers/bumps_de.py +0 -0
  683. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/analysis/minimizers/bumps_lm.py +0 -0
  684. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/analysis/minimizers/dfols.py +0 -0
  685. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/analysis/minimizers/factory.py +0 -0
  686. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/analysis/minimizers/lmfit.py +0 -0
  687. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/analysis/minimizers/lmfit_least_squares.py +0 -0
  688. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/analysis/minimizers/lmfit_leastsq.py +0 -0
  689. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/core/diagnostic.py +0 -0
  690. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/core/factory.py +0 -0
  691. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/core/metadata.py +0 -0
  692. {easydiffraction-0.15.0/src/easydiffraction/analysis/categories → easydiffraction-0.17.0/src/easydiffraction/crystallography}/__init__.py +0 -0
  693. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/crystallography/space_groups.pkl.gz +0 -0
  694. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/crystallography/space_groups.py +0 -0
  695. {easydiffraction-0.15.0/src/easydiffraction/analysis/fit_helpers → easydiffraction-0.17.0/src/easydiffraction/datablocks}/__init__.py +0 -0
  696. {easydiffraction-0.15.0/src/easydiffraction/core → easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment}/__init__.py +0 -0
  697. {easydiffraction-0.15.0/src/easydiffraction/crystallography → easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories}/__init__.py +0 -0
  698. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/background/__init__.py +0 -0
  699. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/background/base.py +0 -0
  700. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/background/enums.py +0 -0
  701. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/background/factory.py +0 -0
  702. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/calculation/__init__.py +0 -0
  703. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/calculation/factory.py +0 -0
  704. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/diffrn/__init__.py +0 -0
  705. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/diffrn/factory.py +0 -0
  706. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/excluded_regions/__init__.py +0 -0
  707. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/excluded_regions/factory.py +0 -0
  708. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/experiment_type/__init__.py +0 -0
  709. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/experiment_type/factory.py +0 -0
  710. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/extinction/__init__.py +0 -0
  711. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/extinction/factory.py +0 -0
  712. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/instrument/__init__.py +0 -0
  713. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/instrument/cwl.py +0 -0
  714. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/instrument/factory.py +0 -0
  715. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/instrument/tof.py +0 -0
  716. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/linked_crystal/__init__.py +0 -0
  717. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/linked_crystal/factory.py +0 -0
  718. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/linked_phases/__init__.py +0 -0
  719. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/linked_phases/factory.py +0 -0
  720. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/peak/__init__.py +0 -0
  721. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/peak/cwl.py +0 -0
  722. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/peak/cwl_mixins.py +0 -0
  723. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/peak/factory.py +0 -0
  724. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/peak/tof.py +0 -0
  725. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/peak/tof_mixins.py +0 -0
  726. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/peak/total.py +0 -0
  727. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/peak/total_mixins.py +0 -0
  728. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/item/__init__.py +0 -0
  729. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/item/enums.py +0 -0
  730. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/item/factory.py +0 -0
  731. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/item/total_pd.py +0 -0
  732. {easydiffraction-0.15.0/src/easydiffraction/datablocks → easydiffraction-0.17.0/src/easydiffraction/datablocks/structure}/__init__.py +0 -0
  733. {easydiffraction-0.15.0/src/easydiffraction/datablocks/experiment → easydiffraction-0.17.0/src/easydiffraction/datablocks/structure/categories}/__init__.py +0 -0
  734. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/structure/categories/atom_site_aniso/__init__.py +0 -0
  735. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/structure/categories/atom_site_aniso/factory.py +0 -0
  736. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/structure/categories/atom_sites/__init__.py +0 -0
  737. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/structure/categories/atom_sites/enums.py +0 -0
  738. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/structure/categories/atom_sites/factory.py +0 -0
  739. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/structure/categories/cell/__init__.py +0 -0
  740. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/structure/categories/cell/factory.py +0 -0
  741. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/structure/categories/space_group/__init__.py +0 -0
  742. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/structure/categories/space_group/factory.py +0 -0
  743. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/structure/collection.py +0 -0
  744. {easydiffraction-0.15.0/src/easydiffraction/datablocks/experiment/categories → easydiffraction-0.17.0/src/easydiffraction/datablocks/structure/item}/__init__.py +0 -0
  745. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/structure/item/base.py +0 -0
  746. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/datablocks/structure/item/factory.py +0 -0
  747. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/display/__init__.py +0 -0
  748. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/display/base.py +0 -0
  749. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/display/plotters/__init__.py +0 -0
  750. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/display/tablers/__init__.py +0 -0
  751. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/display/utils.py +0 -0
  752. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/io/__init__.py +0 -0
  753. {easydiffraction-0.15.0/src/easydiffraction/datablocks/structure → easydiffraction-0.17.0/src/easydiffraction/io/cif}/__init__.py +0 -0
  754. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/io/cif/handler.py +0 -0
  755. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/io/cif/parse.py +0 -0
  756. {easydiffraction-0.15.0/src/easydiffraction/datablocks/structure/categories → easydiffraction-0.17.0/src/easydiffraction/project}/__init__.py +0 -0
  757. {easydiffraction-0.15.0/src/easydiffraction/datablocks/structure/item → easydiffraction-0.17.0/src/easydiffraction/project/categories}/__init__.py +0 -0
  758. {easydiffraction-0.15.0/src/easydiffraction/io/cif → easydiffraction-0.17.0/src/easydiffraction/summary}/__init__.py +0 -0
  759. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/utils/__init__.py +0 -0
  760. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/utils/_vendored/__init__.py +0 -0
  761. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/utils/_vendored/jupyter_dark_detect/__init__.py +0 -0
  762. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/utils/_vendored/jupyter_dark_detect/detector.py +0 -0
  763. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/utils/_vendored/theme_detect.py +0 -0
  764. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/src/easydiffraction/utils/enums.py +0 -0
  765. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/functional/conftest.py +0 -0
  766. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/functional/test_adp_switching.py +0 -0
  767. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/functional/test_experiment_workflow.py +0 -0
  768. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/integration/fitting/test_cif_round_trip.py +0 -0
  769. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/integration/fitting/test_pair-distribution-function.py +0 -0
  770. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/integration/fitting/test_single-crystal-diffraction.py +0 -0
  771. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/integration/fitting/test_summary_report.py +0 -0
  772. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/integration/fitting/test_switch-calculator.py +0 -0
  773. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/integration/scipp-analysis/dream/conftest.py +0 -0
  774. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/integration/scipp-analysis/dream/test_analyze_reduced_data.py +0 -0
  775. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/integration/scipp-analysis/dream/test_read_reduced_data.py +0 -0
  776. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/integration/scipp-analysis/dream/test_validate_meta_data.py +0 -0
  777. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/integration/scipp-analysis/dream/test_validate_physical_data.py +0 -0
  778. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/analysis/calculators/test_base.py +0 -0
  779. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/analysis/calculators/test_crysfml.py +0 -0
  780. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/analysis/calculators/test_factory.py +0 -0
  781. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/analysis/calculators/test_pdffit.py +0 -0
  782. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/analysis/categories/test_aliases.py +0 -0
  783. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/analysis/fit_helpers/test_metrics.py +0 -0
  784. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/analysis/minimizers/test_bumps_amoeba.py +0 -0
  785. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/analysis/minimizers/test_bumps_de.py +0 -0
  786. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/analysis/minimizers/test_bumps_lm.py +0 -0
  787. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/analysis/minimizers/test_lmfit_least_squares.py +0 -0
  788. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/analysis/minimizers/test_lmfit_leastsq.py +0 -0
  789. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/analysis/test_analysis_show_empty.py +0 -0
  790. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/core/test_collection.py +0 -0
  791. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/core/test_diagnostic.py +0 -0
  792. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/core/test_factory.py +0 -0
  793. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/core/test_guard.py +0 -0
  794. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/core/test_identity.py +0 -0
  795. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/core/test_metadata.py +0 -0
  796. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/core/test_singletons.py +0 -0
  797. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/core/test_validation.py +0 -0
  798. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/crystallography/test_crystallography.py +0 -0
  799. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/crystallography/test_space_groups.py +0 -0
  800. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/crystallography/test_space_groups_coverage.py +0 -0
  801. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/background/test_base.py +0 -0
  802. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/background/test_chebyshev.py +0 -0
  803. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/background/test_enums.py +0 -0
  804. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/background/test_factory.py +0 -0
  805. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/background/test_line_segment.py +0 -0
  806. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/calculation/test_default.py +0 -0
  807. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/calculation/test_factory.py +0 -0
  808. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/instrument/test_base.py +0 -0
  809. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/instrument/test_cwl.py +0 -0
  810. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/instrument/test_factory.py +0 -0
  811. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/instrument/test_tof.py +0 -0
  812. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_base.py +0 -0
  813. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_cwl.py +0 -0
  814. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_cwl_mixins.py +0 -0
  815. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_factory.py +0 -0
  816. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_tof.py +0 -0
  817. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_tof_mixins.py +0 -0
  818. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_total.py +0 -0
  819. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_total_mixins.py +0 -0
  820. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/test_diffrn.py +0 -0
  821. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/test_excluded_regions.py +0 -0
  822. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/test_experiment_type.py +0 -0
  823. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/test_extinction.py +0 -0
  824. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/test_linked_crystal.py +0 -0
  825. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/test_linked_phases.py +0 -0
  826. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_base.py +0 -0
  827. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_base_coverage.py +0 -0
  828. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_bragg_sc.py +0 -0
  829. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_enums.py +0 -0
  830. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_enums_coverage.py +0 -0
  831. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_factory.py +0 -0
  832. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_factory_coverage.py +0 -0
  833. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_total_pd.py +0 -0
  834. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/test_collection.py +0 -0
  835. {easydiffraction-0.15.0/src/easydiffraction/project → easydiffraction-0.17.0/tests/unit/easydiffraction/datablocks/structure/categories}/__init__.py +0 -0
  836. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/structure/categories/test_atom_site_aniso.py +0 -0
  837. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/structure/categories/test_atom_sites.py +0 -0
  838. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/structure/categories/test_cell.py +0 -0
  839. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/structure/categories/test_space_group.py +0 -0
  840. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/structure/item/test_base.py +0 -0
  841. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/structure/item/test_base_coverage.py +0 -0
  842. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/structure/item/test_factory.py +0 -0
  843. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/structure/test_collection.py +0 -0
  844. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/structure/test_collection_coverage.py +0 -0
  845. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/display/plotters/test_base.py +0 -0
  846. {easydiffraction-0.15.0/src/easydiffraction/project/categories → easydiffraction-0.17.0/tests/unit/easydiffraction/display/tablers}/__init__.py +0 -0
  847. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/display/tablers/test_base.py +0 -0
  848. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/display/test_base.py +0 -0
  849. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/display/test_utils.py +0 -0
  850. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/io/cif/test_handler.py +0 -0
  851. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/io/cif/test_parse.py +0 -0
  852. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/project/test_project_info.py +0 -0
  853. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/project/test_project_load_and_summary_wrap.py +0 -0
  854. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/test___init__.py +0 -0
  855. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/utils/test_enums.py +0 -0
  856. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/utils/test_environment_coverage.py +0 -0
  857. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/utils/test_logging.py +0 -0
  858. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/utils/test_logging_coverage.py +0 -0
  859. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tests/unit/easydiffraction/utils/test_theme_detect.py +0 -0
  860. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tools/gen_tests_scaffold.py +0 -0
  861. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tools/naming_check.py +0 -0
  862. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tools/test_scripts.py +0 -0
  863. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tools/test_structure_check.py +0 -0
  864. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tools/tweak_notebooks.py +0 -0
  865. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tools/update_docs_assets.py +0 -0
  866. {easydiffraction-0.15.0 → easydiffraction-0.17.0}/tools/update_github_labels.py +0 -0
@@ -0,0 +1,26 @@
1
+ # Codecov configuration
2
+ # https://docs.codecov.com/docs/codecov-yaml
3
+
4
+ github_checks:
5
+ annotations: true
6
+
7
+ comment:
8
+ layout: 'reach, diff, flags, files'
9
+ behavior: default
10
+ require_changes: false
11
+ require_base: false
12
+ require_head: true
13
+
14
+ coverage:
15
+ status:
16
+ project:
17
+ default:
18
+ target: auto
19
+ threshold: 1%
20
+ # Make project coverage informational (won't block PR)
21
+ informational: true
22
+ patch:
23
+ default:
24
+ target: auto
25
+ # Require patch coverage but with threshold
26
+ threshold: 1%
@@ -0,0 +1,26 @@
1
+ # WARNING: Do not edit this file manually.
2
+ # Any changes will be overwritten by Copier.
3
+ _commit: v0.11.4
4
+ _src_path: gh:easyscience/templates
5
+ app_docs_url: https://easyscience.github.io/diffraction-app
6
+ app_doi: 10.5281/zenodo.18163581
7
+ app_package_name: easydiffraction_app
8
+ app_python: '3.14'
9
+ app_repo_name: diffraction-app
10
+ home_page_url: https://easyscience.github.io/diffraction
11
+ home_repo_name: diffraction
12
+ lib_docs_url: https://easyscience.github.io/diffraction-lib
13
+ lib_doi: 10.5281/zenodo.18163581
14
+ lib_package_name: easydiffraction
15
+ lib_python_max: '3.14'
16
+ lib_python_min: '3.12'
17
+ lib_repo_name: diffraction-lib
18
+ project_contact_email: support@easydiffraction.org
19
+ project_copyright_years: 2021-2026
20
+ project_extended_description: A software for calculating diffraction patterns based
21
+ on a structural model and refining its parameters against experimental data
22
+ project_name: EasyDiffraction
23
+ project_short_description: Diffraction data analysis
24
+ project_shortcut: ED
25
+ project_type: both
26
+ template_type: lib
@@ -0,0 +1,50 @@
1
+ name: 'Download artifact'
2
+ description: 'Wrapper for actions/download-artifact'
3
+ inputs:
4
+ name:
5
+ description: 'Name of the artifact to download'
6
+ required: true
7
+
8
+ path:
9
+ description: 'Destination path'
10
+ required: false
11
+ default: '.'
12
+
13
+ pattern:
14
+ description: 'Glob pattern to match artifact names (optional)'
15
+ required: false
16
+ default: ''
17
+
18
+ merge-multiple:
19
+ description: 'Merge multiple artifacts into the same directory'
20
+ required: false
21
+ default: 'false'
22
+
23
+ github-token:
24
+ description: 'GitHub token for cross-repo download (optional)'
25
+ required: false
26
+ default: ''
27
+
28
+ repository:
29
+ description: 'owner/repo for cross-repo download (optional)'
30
+ required: false
31
+ default: ''
32
+
33
+ run-id:
34
+ description: 'Workflow run ID for cross-run download (optional)'
35
+ required: false
36
+ default: ''
37
+
38
+ runs:
39
+ using: 'composite'
40
+ steps:
41
+ - name: Download artifact
42
+ uses: actions/download-artifact@v8
43
+ with:
44
+ name: ${{ inputs.name }}
45
+ path: ${{ inputs.path }}
46
+ pattern: ${{ inputs.pattern }}
47
+ merge-multiple: ${{ inputs.merge-multiple }}
48
+ github-token: ${{ inputs.github-token }}
49
+ repository: ${{ inputs.repository }}
50
+ run-id: ${{ inputs.run-id }}
@@ -0,0 +1,19 @@
1
+ name: 'GitHub Script'
2
+ description: 'Wrapper for actions/github-script'
3
+ inputs:
4
+ script:
5
+ description: 'JavaScript to run'
6
+ required: true
7
+
8
+ github-token:
9
+ description: 'GitHub token (defaults to github.token)'
10
+ required: false
11
+ default: ${{ github.token }}
12
+
13
+ runs:
14
+ using: 'composite'
15
+ steps:
16
+ - uses: actions/github-script@v9
17
+ with:
18
+ script: ${{ inputs.script }}
19
+ github-token: ${{ inputs.github-token }}
@@ -0,0 +1,40 @@
1
+ name: 'Setup EasyScience bot for pushing'
2
+ description: 'Create GitHub App token and configure git identity + origin remote'
3
+ inputs:
4
+ app-id:
5
+ description: 'GitHub App ID'
6
+ required: true
7
+ private-key:
8
+ description: 'GitHub App private key (PEM)'
9
+ required: true
10
+ repositories:
11
+ description: 'Additional repositories to grant access to (newline-separated)'
12
+ required: false
13
+ default: ''
14
+
15
+ outputs:
16
+ token:
17
+ description: 'Installation access token'
18
+ value: ${{ steps.app-token.outputs.token }}
19
+
20
+ runs:
21
+ using: 'composite'
22
+ steps:
23
+ - name: Create GitHub App installation token
24
+ id: app-token
25
+ uses: actions/create-github-app-token@v3
26
+ with:
27
+ client-id: ${{ inputs.app-id }}
28
+ private-key: ${{ inputs.private-key }}
29
+ repositories: ${{ inputs.repositories }}
30
+
31
+ - name: Configure git for pushing
32
+ shell: bash
33
+ run: |
34
+ git config user.name "easyscience[bot]"
35
+ git config user.email "${{ inputs.app-id }}+easyscience[bot]@users.noreply.github.com"
36
+
37
+ - name: Configure origin remote to use the bot token
38
+ shell: bash
39
+ run: |
40
+ git remote set-url origin https://x-access-token:${{ steps.app-token.outputs.token }}@github.com/${{ github.repository }}.git
@@ -0,0 +1,44 @@
1
+ name: 'Setup Pixi Environment'
2
+ description: 'Wrapper for prefix-dev/setup-pixi'
3
+ inputs:
4
+ environments:
5
+ description: 'Pixi environments to setup'
6
+ required: false
7
+ default: 'default'
8
+ activate-environment:
9
+ description: 'Environment to activate'
10
+ required: false
11
+ default: 'default'
12
+ run-install:
13
+ description: 'Whether to run pixi install'
14
+ required: false
15
+ default: 'true'
16
+ locked:
17
+ description: 'Whether to run pixi install --locked'
18
+ required: false
19
+ default: 'false'
20
+ frozen:
21
+ description: 'Whether to run pixi install --frozen'
22
+ required: false
23
+ default: 'true'
24
+ cache:
25
+ description: 'Whether to use cache'
26
+ required: false
27
+ default: 'false'
28
+ post-cleanup:
29
+ description: 'Whether to run post cleanup'
30
+ required: false
31
+ default: 'false'
32
+
33
+ runs:
34
+ using: 'composite'
35
+ steps:
36
+ - uses: prefix-dev/setup-pixi@v0.9.5
37
+ with:
38
+ environments: ${{ inputs.environments }}
39
+ activate-environment: ${{ inputs.activate-environment }}
40
+ run-install: ${{ inputs.run-install }}
41
+ locked: ${{ inputs.locked }}
42
+ frozen: ${{ inputs.frozen }}
43
+ cache: ${{ inputs.cache }}
44
+ post-cleanup: ${{ inputs.post-cleanup }}
@@ -0,0 +1,49 @@
1
+ name: 'Upload artifact'
2
+ description: 'Wrapper for actions/upload-artifact'
3
+ inputs:
4
+ name:
5
+ description: 'Artifact name'
6
+ required: true
7
+
8
+ path:
9
+ description: 'File(s)/dir(s)/glob(s) to upload (newline-separated)'
10
+ required: true
11
+
12
+ include-hidden-files:
13
+ description: 'Include hidden files'
14
+ required: false
15
+ default: 'true'
16
+
17
+ if-no-files-found:
18
+ description: 'warn | error | ignore'
19
+ required: false
20
+ default: 'error'
21
+
22
+ compression-level:
23
+ description: '0-9 (0 = no compression)'
24
+ required: false
25
+ default: '0'
26
+
27
+ retention-days:
28
+ description: 'Retention in days (optional)'
29
+ required: false
30
+ default: ''
31
+
32
+ overwrite:
33
+ description: 'Overwrite an existing artifact with the same name'
34
+ required: false
35
+ default: 'false'
36
+
37
+ runs:
38
+ using: 'composite'
39
+ steps:
40
+ - name: Upload artifact
41
+ uses: actions/upload-artifact@v7
42
+ with:
43
+ name: ${{ inputs.name }}
44
+ path: ${{ inputs.path }}
45
+ include-hidden-files: ${{ inputs.include-hidden-files }}
46
+ if-no-files-found: ${{ inputs.if-no-files-found }}
47
+ compression-level: ${{ inputs.compression-level }}
48
+ retention-days: ${{ inputs.retention-days }}
49
+ overwrite: ${{ inputs.overwrite }}
@@ -0,0 +1,42 @@
1
+ name: 'Upload coverage to Codecov'
2
+ description: 'Wrapper for codecov/codecov-action'
3
+
4
+ inputs:
5
+ name:
6
+ description: 'Codecov upload name'
7
+ required: true
8
+
9
+ flags:
10
+ description: 'Codecov flags'
11
+ required: false
12
+ default: ''
13
+
14
+ files:
15
+ description: 'Coverage report files'
16
+ required: true
17
+
18
+ fail_ci_if_error:
19
+ description: 'Fail CI if upload fails'
20
+ required: false
21
+ default: 'true'
22
+
23
+ verbose:
24
+ description: 'Enable verbose output'
25
+ required: false
26
+ default: 'true'
27
+
28
+ token:
29
+ description: 'Codecov token'
30
+ required: true
31
+
32
+ runs:
33
+ using: composite
34
+ steps:
35
+ - uses: codecov/codecov-action@v6
36
+ with:
37
+ name: ${{ inputs.name }}
38
+ flags: ${{ inputs.flags }}
39
+ files: ${{ inputs.files }}
40
+ fail_ci_if_error: ${{ inputs.fail_ci_if_error }}
41
+ verbose: ${{ inputs.verbose }}
42
+ token: ${{ inputs.token }}
@@ -0,0 +1,224 @@
1
+ # Copilot Instructions for EasyDiffraction
2
+
3
+ ## Project Context
4
+
5
+ - Python library for crystallographic diffraction analysis (refining
6
+ structural models against experimental data).
7
+ - Domain axes: `sample_form` (powder, single crystal), `beam_mode`
8
+ (time-of-flight, constant wavelength), `radiation_probe` (neutron,
9
+ x-ray), `scattering_type` (bragg, total).
10
+ - Calculation backends: `cryspy` and `crysfml` (Bragg), `pdffit2` (total
11
+ scattering).
12
+ - CIF maps to `DatablockItem`/`DatablockCollection` and
13
+ `CategoryItem`/`CategoryCollection` (loops). Follow CIF naming;
14
+ deviate only for a clearly better API.
15
+ - Metadata via frozen dataclasses: `TypeInfo`, `Compatibility`,
16
+ `CalculatorSupport`.
17
+ - Audience is scientists, often non-programmers: prioritize
18
+ discoverability, clear errors, and safe defaults over developer
19
+ ergonomics.
20
+ - Critical-software rigor: every code path tested, edge cases handled
21
+ explicitly, no silent failures.
22
+
23
+ ## Code Style
24
+
25
+ - snake_case (functions/vars), PascalCase (classes), UPPER_SNAKE_CASE
26
+ (constants).
27
+ - `from __future__ import annotations` in every module. Type-annotate
28
+ all public signatures.
29
+ - Numpy-style docstrings on all public classes/methods (Parameters /
30
+ Returns / Raises where applicable). Summary is one line ≤72 chars
31
+ (`max-doc-length`); shorten wording rather than wrap.
32
+ - Flat over nested, explicit over clever, composition over deep
33
+ inheritance. No defensive checks for unlikely edge cases.
34
+ - One class per file when substantial; group small related classes.
35
+ - No `**kwargs` — use explicit keyword arguments.
36
+ - No string-based dispatch (e.g. `getattr(self, f'_{name}')`); write
37
+ named methods (`_set_sample_form`, `_set_beam_mode`). Narrow framework
38
+ metadata lookups are allowed when the attribute name is a class-level
39
+ declaration, is not user input, and is validated in one central place;
40
+ for example, `CategoryItem._category_entry_name`.
41
+ - Public attrs are either editable (getter+setter property) or read-only
42
+ (getter only). For internal mutation of read-only props, use a private
43
+ `_set_<name>` method, not a public setter.
44
+ - Lint complexity thresholds in `pyproject.toml` (`max-args`,
45
+ `max-branches`, `max-statements`, `max-locals`, `max-nested-blocks`,
46
+ …) are guardrails. A violation means refactor (extract helpers,
47
+ parameter objects, flatten) — do not raise thresholds, add `# noqa`,
48
+ or otherwise silence them. For complex refactors touching many lines
49
+ or public API, propose a plan and wait for approval.
50
+
51
+ ## Architecture
52
+
53
+ - Eager top-of-module imports by default. Lazy imports only to break
54
+ circular deps or to keep `core/` free of heavy imports on rarely-
55
+ called paths (e.g. `help()`).
56
+ - No `pkgutil`/`importlib` auto-discovery, no background threads, no
57
+ monkey-patching or runtime class mutation.
58
+ - No `__all__`; control public API via explicit `__init__.py` imports.
59
+ No redundant `import X as X` aliases.
60
+ - Concrete classes use `@Factory.register`. Each package's `__init__.py`
61
+ must explicitly import every concrete class to trigger registration —
62
+ always update it when adding a class.
63
+ - Switchable categories (factory-swappable at runtime) follow this fixed
64
+ API on the owner (experiment / structure / analysis): `<category>`
65
+ (read-only), `<category>_type` (getter+setter),
66
+ `show_supported_<category>_types()`, `show_current_<category>_type()`.
67
+ The owner owns the type setter and show methods; show methods delegate
68
+ to `Factory.show_supported(...)`. Required even if only one
69
+ implementation exists.
70
+ - Categories are flat siblings within their owner. Never nest a category
71
+ as a child of another category of a different type; cross-reference
72
+ via IDs instead.
73
+ - Every finite, closed set of values (factory tags, axes, enumerated
74
+ descriptors) is a `(str, Enum)`; compare against members, not raw
75
+ strings.
76
+ - Keep `core/` free of domain logic (base classes and utilities only).
77
+ - Don't introduce abstractions before a concrete second use case. Don't
78
+ add dependencies without asking.
79
+
80
+ ## Testing
81
+
82
+ - Every new module, class, or bug fix ships with tests. See
83
+ `docs/dev/adrs/accepted/test-strategy.md` for the full strategy.
84
+ - Unit tests mirror the source tree:
85
+ `src/easydiffraction/<pkg>/<mod>.py` →
86
+ `tests/unit/easydiffraction/<pkg>/test_<mod>.py`. Verify with
87
+ `pixi run test-structure-check`. Supplementary tests:
88
+ `test_<mod>_coverage.py`. Category packages with only
89
+ `default.py`/`factory.py` may use one parent-level
90
+ `test_<package>.py`.
91
+ - Tests expecting `log.error()` to raise must `monkeypatch` Logger to
92
+ RAISE mode (another test may have leaked WARN mode).
93
+ - `@typechecked` setters raise `typeguard.TypeCheckError`, not
94
+ `TypeError`.
95
+ - No test-ordering dependence, no network, no sleeping, no real
96
+ calculation engines in unit tests.
97
+
98
+ ## Tutorials
99
+
100
+ - Notebooks in `docs/docs/tutorials/*.ipynb` are generated artifacts.
101
+ Edit only the corresponding `*.py`, then run
102
+ `pixi run notebook-prepare`.
103
+
104
+ ## Change Discipline
105
+
106
+ - Before any structural/design change (new categories, factories,
107
+ switchable-category wiring, datablocks, CIF serialisation), read
108
+ `docs/dev/adrs/index.md` and the relevant accepted ADRs. Localised bug
109
+ fixes or test updates need only this file.
110
+ - Development documentation lives under `docs/dev/`. Use
111
+ `docs/dev/adrs/index.md` as the architecture and decision navigation
112
+ surface; there is no separate `architecture.md` source of truth.
113
+ - Project is in beta: no legacy shims, no deprecation warnings — update
114
+ tests and tutorials to the current API.
115
+ - Minimal diffs; don't reformat working code. Fix only what's asked;
116
+ flag adjacent issues as comments. Don't add features or refactor
117
+ unless asked. Don't remove TODOs or comments unless the change fully
118
+ resolves them.
119
+ - Never remove or replace existing functionality without explicit
120
+ confirmation — highlight every removal and wait for approval.
121
+ - When renaming or auditing usages, search the entire project (code,
122
+ tests, tutorials, docs). Use `git grep -n` because all contributors
123
+ have Git; do not assume `rg` is installed. If `git grep` is
124
+ unavailable, fall back to `find ... -type f` plus `grep -n`.
125
+ - Each change is atomic and single-commit-sized: make one change,
126
+ suggest the commit message, then stop and wait for confirmation.
127
+ - When in doubt, ask.
128
+
129
+ ## Commits
130
+
131
+ - Suggest a commit message after each change: code block, ≤72 chars,
132
+ imperative mood, no type prefix, no `Co-authored-by: Copilot`.
133
+ Examples:
134
+ - Add ChebyshevPolynomialBackground class
135
+ - Implement background_type setter on Experiment
136
+ - Standardize switchable-category naming convention
137
+ - Stage only the files modified for the step, using explicit paths where
138
+ practical. Do not include data, project, CIF, or other generated
139
+ artifacts produced by integration/script/notebook tests unless the
140
+ user explicitly asked to update them.
141
+ - Before each commit, inspect the worktree and avoid staging unrelated
142
+ user changes. If unrelated dirty files exist, leave them untouched and
143
+ mention them only when relevant.
144
+
145
+ ## Workflow
146
+
147
+ Non-trivial changes use a two-phase workflow:
148
+
149
+ - **Phase 1 — Implementation.** Code and docs updates only. Update ADRs
150
+ when the change affects architecture or documented decisions. Do not
151
+ create or run tests unless the user explicitly asks. When done,
152
+ present for review and iterate until approved.
153
+ - **Phase 2 — Verification.** Add/update tests, then run `pixi run fix`,
154
+ `pixi run check`, `pixi run unit-tests`, `pixi run integration-tests`,
155
+ `pixi run script-tests`.
156
+
157
+ Notes:
158
+
159
+ - `pixi run fix` regenerates `docs/dev/package-structure/full.md` and
160
+ `docs/dev/package-structure/short.md` automatically — never edit those
161
+ by hand. Don't review auto-fixes; accept and move on. Then
162
+ `pixi run check` until clean.
163
+ - When a check command needs saved output for analysis, capture the log
164
+ and preserve the command exit code with a zsh-safe variable name:
165
+ `pixi run check > /tmp/easydiffraction-check.log 2>&1; check_exit_code=$?; tail -n 200 /tmp/easydiffraction-check.log; exit $check_exit_code`.
166
+ Never assign to `status` in zsh; it is readonly. Use task-specific
167
+ names such as `check_exit_code`, `unit_tests_exit_code`, or
168
+ `script_tests_exit_code`.
169
+ - Open issues / design questions / planned improvements live in
170
+ `docs/dev/issues/open.md` (priority-ordered). On resolution, move to
171
+ `docs/dev/issues/closed.md` and update the relevant ADR or
172
+ `docs/dev/adrs/index.md` if affected.
173
+
174
+ ### Planning
175
+
176
+ When asked to create a plan:
177
+
178
+ - Start the plan by referencing this file:
179
+ `.github/copilot-instructions.md`. State any deliberate exception to
180
+ these instructions in the plan itself.
181
+ - First gather enough repository context to make the plan concrete. Ask
182
+ all ambiguous or unclear questions in one concise batch; record
183
+ unresolved questions in the plan if the user wants it saved before
184
+ answering them.
185
+ - Save plans as `docs/dev/plans/<feature-name>.md` (lowercase,
186
+ dash-separated, e.g. `docs/dev/plans/background-refactor.md`). When a
187
+ plan implements one ADR, use the same slug as the ADR file; for
188
+ example, `docs/dev/adrs/suggestions/foo.md` maps to
189
+ `docs/dev/plans/foo.md`. If a plan has no corresponding ADR or spans
190
+ multiple ADRs, choose a concise feature slug and list all related ADRs
191
+ in the plan. Use the same `<feature-name>` for the implementation
192
+ branch (`feature/<feature-name>`). Do not push the branch unless
193
+ asked.
194
+ - Include a status checklist with `[ ]` items; mark `[x]` as completed
195
+ during implementation.
196
+ - Apply the two-phase workflow (Phase 1 implementation, Phase 2
197
+ verification) to non-trivial plans. Stop after Phase 1 and ask the
198
+ user to review before starting Phase 2.
199
+ - The plan must explicitly state that, when an AI agent follows it,
200
+ every completed Phase 1 implementation step must be staged with
201
+ explicit paths and committed locally before moving to the next
202
+ implementation step or the Phase 1 review gate. Follow the rules in
203
+ **Commits**. Keep commits atomic, single-purpose, and aligned with
204
+ plan steps.
205
+ - If implementation uncovers a serious requirement, risk, design issue,
206
+ or scope change not covered by the plan, stop and ask the user for
207
+ clarification or approval before proceeding. Record the unresolved
208
+ issue in the plan when useful.
209
+ - The plan should be easy to maintain while working: include concrete
210
+ files likely to change, decisions already made, open questions,
211
+ verification commands for Phase 2, and a short suggested commit
212
+ message or branch name when useful.
213
+ - Verification commands in plans must include the zsh-safe log-capture
214
+ pattern from **Workflow** whenever saved output is needed for later
215
+ analysis.
216
+ - Before saving a plan, verify that referenced files, directories,
217
+ scripts, and task names exist locally when that is practical. If a
218
+ referenced tool is optional or missing, include an available fallback.
219
+ - End every plan with a "Suggested Pull Request" section containing a
220
+ short PR title and a brief end-user-oriented description. Keep this
221
+ section non-technical enough for scientists and other users to
222
+ understand the benefit. Update it during implementation if extra
223
+ approved changes become important enough to mention in the PR title or
224
+ description.
@@ -0,0 +1,77 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -euo pipefail
4
+
5
+ remote_repository="${DASHBOARD_REMOTE_REPOSITORY:?}"
6
+ publish_branch="${DASHBOARD_PUBLISH_BRANCH:-master}"
7
+ source_dir="${DASHBOARD_SOURCE_DIR:?}"
8
+ token="${DASHBOARD_TOKEN:?}"
9
+ git_user_name="${DASHBOARD_GIT_USER_NAME:-easyscience[bot]}"
10
+ git_user_email="${DASHBOARD_GIT_USER_EMAIL:?}"
11
+ commit_message="${DASHBOARD_COMMIT_MESSAGE:?}"
12
+ max_attempts="${DASHBOARD_PUSH_ATTEMPTS:-3}"
13
+ delay_seconds="${DASHBOARD_PUSH_DELAY_SECONDS:-15}"
14
+
15
+ workspace_dir="$(mktemp -d)"
16
+ repo_dir="${workspace_dir}/dashboard"
17
+ remote_url="https://x-access-token:${token}@github.com/${remote_repository}.git"
18
+
19
+ cleanup() {
20
+ rm -rf "${workspace_dir}"
21
+ }
22
+
23
+ prepare_worktree() {
24
+ if [[ ! -d "${repo_dir}/.git" ]]; then
25
+ git clone --branch "${publish_branch}" --depth 1 "${remote_url}" "${repo_dir}"
26
+ else
27
+ git -C "${repo_dir}" fetch origin "${publish_branch}"
28
+ git -C "${repo_dir}" checkout "${publish_branch}"
29
+ git -C "${repo_dir}" reset --hard "origin/${publish_branch}"
30
+ git -C "${repo_dir}" clean -fd
31
+ fi
32
+
33
+ git -C "${repo_dir}" config user.name "${git_user_name}"
34
+ git -C "${repo_dir}" config user.email "${git_user_email}"
35
+ }
36
+
37
+ sync_publish_dir() {
38
+ cp -R "${source_dir}/." "${repo_dir}/"
39
+ git -C "${repo_dir}" add .
40
+
41
+ if git -C "${repo_dir}" diff --cached --quiet; then
42
+ return 1
43
+ fi
44
+
45
+ git -C "${repo_dir}" commit -m "${commit_message}"
46
+ }
47
+
48
+ trap cleanup EXIT
49
+
50
+ prepare_worktree
51
+
52
+ if ! sync_publish_dir; then
53
+ echo "No dashboard changes to publish."
54
+ exit 0
55
+ fi
56
+
57
+ for ((attempt = 1; attempt <= max_attempts; attempt += 1)); do
58
+ if git -C "${repo_dir}" push origin "HEAD:${publish_branch}"; then
59
+ echo "Dashboard published on attempt ${attempt}."
60
+ exit 0
61
+ fi
62
+
63
+ if ((attempt == max_attempts)); then
64
+ echo "Dashboard publish failed after ${max_attempts} attempts." >&2
65
+ exit 1
66
+ fi
67
+
68
+ echo "Dashboard push attempt ${attempt} failed. Retrying in ${delay_seconds}s." >&2
69
+ sleep "${delay_seconds}"
70
+
71
+ prepare_worktree
72
+
73
+ if ! sync_publish_dir; then
74
+ echo "Dashboard changes already exist in the target repository."
75
+ exit 0
76
+ fi
77
+ done