easydiffraction 0.16.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 (840) 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/setup-pixi/action.yml +44 -0
  4. easydiffraction-0.17.0/.github/copilot-instructions.md +224 -0
  5. easydiffraction-0.17.0/.github/workflows/coverage.yml +94 -0
  6. easydiffraction-0.17.0/.github/workflows/dashboard.yml +115 -0
  7. easydiffraction-0.17.0/.github/workflows/docs.yml +188 -0
  8. easydiffraction-0.17.0/.github/workflows/issues-labels.yml +40 -0
  9. easydiffraction-0.17.0/.github/workflows/pr-labels.yml +45 -0
  10. easydiffraction-0.17.0/.github/workflows/release-pr.yml +55 -0
  11. easydiffraction-0.17.0/.github/workflows/test.yml +321 -0
  12. easydiffraction-0.17.0/.gitignore +53 -0
  13. easydiffraction-0.17.0/CONTRIBUTING.md +452 -0
  14. easydiffraction-0.17.0/PKG-INFO +135 -0
  15. easydiffraction-0.17.0/docs/dev/adrs/accepted/analysis-cif-fit-state.md +193 -0
  16. easydiffraction-0.17.0/docs/dev/adrs/accepted/category-owner-sections.md +206 -0
  17. easydiffraction-0.17.0/docs/dev/adrs/accepted/category-parameter-access.md +44 -0
  18. easydiffraction-0.17.0/docs/dev/adrs/accepted/development-docs-structure.md +66 -0
  19. easydiffraction-0.17.0/docs/dev/adrs/accepted/display-ux.md +244 -0
  20. easydiffraction-0.17.0/docs/dev/adrs/accepted/enum-backed-closed-values.md +34 -0
  21. easydiffraction-0.17.0/docs/dev/adrs/accepted/factory-contracts.md +44 -0
  22. easydiffraction-0.17.0/docs/dev/adrs/accepted/factory-tag-naming.md +48 -0
  23. easydiffraction-0.17.0/docs/dev/adrs/accepted/fit-mode-categories.md +781 -0
  24. easydiffraction-0.17.0/docs/dev/adrs/accepted/free-flag-cif-encoding.md +39 -0
  25. easydiffraction-0.17.0/docs/dev/adrs/accepted/guarded-public-properties.md +44 -0
  26. easydiffraction-0.17.0/docs/dev/adrs/accepted/help-discoverability.md +65 -0
  27. easydiffraction-0.17.0/docs/dev/adrs/accepted/immutable-experiment-type.md +35 -0
  28. easydiffraction-0.17.0/docs/dev/adrs/accepted/lint-complexity-thresholds.md +33 -0
  29. easydiffraction-0.17.0/docs/dev/adrs/accepted/loop-category-key-identity.md +163 -0
  30. easydiffraction-0.17.0/docs/dev/adrs/accepted/notebook-generation.md +34 -0
  31. easydiffraction-0.17.0/docs/dev/adrs/accepted/parameter-correlation-persistence.md +104 -0
  32. easydiffraction-0.17.0/docs/dev/adrs/accepted/project-facade-and-persistence.md +80 -0
  33. easydiffraction-0.17.0/docs/dev/adrs/accepted/property-docstring-template.md +39 -0
  34. easydiffraction-0.17.0/docs/dev/adrs/accepted/runtime-fit-results.md +36 -0
  35. easydiffraction-0.17.0/docs/dev/adrs/accepted/selector-families.md +40 -0
  36. easydiffraction-0.17.0/docs/dev/adrs/accepted/string-paths-and-live-descriptors.md +45 -0
  37. easydiffraction-0.17.0/docs/dev/adrs/accepted/switchable-category-api.md +45 -0
  38. easydiffraction-0.17.0/docs/dev/adrs/accepted/test-strategy.md +41 -0
  39. easydiffraction-0.17.0/docs/dev/adrs/accepted/type-neutral-adp-parameters.md +42 -0
  40. easydiffraction-0.17.0/docs/dev/adrs/index.md +46 -0
  41. easydiffraction-0.17.0/docs/dev/adrs/suggestions/fit-output-files-and-data-exports.md +172 -0
  42. easydiffraction-0.17.0/docs/dev/adrs/suggestions/parameter-posterior-summary.md +337 -0
  43. easydiffraction-0.17.0/docs/dev/adrs/suggestions/python-cif-category-correspondence.md +338 -0
  44. easydiffraction-0.17.0/docs/dev/adrs/suggestions/undo-fit.md +126 -0
  45. easydiffraction-0.17.0/docs/dev/benchmarking/20260519-103251_darwin-arm64_py314_tutorial-benchmarks.csv +24 -0
  46. easydiffraction-0.17.0/docs/dev/benchmarking/20260519-103500_darwin-arm64_py314_tutorial-benchmarks.csv +24 -0
  47. easydiffraction-0.17.0/docs/dev/benchmarking/20260519-121524_darwin-arm64_py314_tutorial-benchmarks.csv +24 -0
  48. easydiffraction-0.17.0/docs/dev/index.md +29 -0
  49. easydiffraction-0.17.0/docs/dev/issues/closed.md +161 -0
  50. easydiffraction-0.17.0/docs/dev/issues/open.md +1786 -0
  51. easydiffraction-0.17.0/docs/dev/package-structure/full.md +570 -0
  52. easydiffraction-0.17.0/docs/dev/package-structure/short.md +292 -0
  53. easydiffraction-0.17.0/docs/docs/cli/index.md +159 -0
  54. easydiffraction-0.17.0/docs/docs/installation-and-setup/index.md +300 -0
  55. easydiffraction-0.17.0/docs/docs/quick-reference/index.md +430 -0
  56. easydiffraction-0.17.0/docs/docs/tutorials/ed-1.ipynb +283 -0
  57. easydiffraction-0.17.0/docs/docs/tutorials/ed-1.py +110 -0
  58. easydiffraction-0.17.0/docs/docs/tutorials/ed-10.ipynb +242 -0
  59. easydiffraction-0.17.0/docs/docs/tutorials/ed-10.py +92 -0
  60. easydiffraction-0.17.0/docs/docs/tutorials/ed-11.ipynb +273 -0
  61. easydiffraction-0.17.0/docs/docs/tutorials/ed-11.py +104 -0
  62. easydiffraction-0.17.0/docs/docs/tutorials/ed-12.ipynb +313 -0
  63. easydiffraction-0.17.0/docs/docs/tutorials/ed-12.py +123 -0
  64. easydiffraction-0.17.0/docs/docs/tutorials/ed-13.ipynb +2667 -0
  65. easydiffraction-0.17.0/docs/docs/tutorials/ed-13.py +1508 -0
  66. easydiffraction-0.17.0/docs/docs/tutorials/ed-14.ipynb +451 -0
  67. easydiffraction-0.17.0/docs/docs/tutorials/ed-14.py +159 -0
  68. easydiffraction-0.17.0/docs/docs/tutorials/ed-15.ipynb +421 -0
  69. easydiffraction-0.17.0/docs/docs/tutorials/ed-15.py +136 -0
  70. easydiffraction-0.17.0/docs/docs/tutorials/ed-16.ipynb +615 -0
  71. easydiffraction-0.17.0/docs/docs/tutorials/ed-16.py +251 -0
  72. easydiffraction-0.17.0/docs/docs/tutorials/ed-17.ipynb +851 -0
  73. easydiffraction-0.17.0/docs/docs/tutorials/ed-17.py +397 -0
  74. easydiffraction-0.17.0/docs/docs/tutorials/ed-18.ipynb +161 -0
  75. easydiffraction-0.17.0/docs/docs/tutorials/ed-18.py +49 -0
  76. easydiffraction-0.17.0/docs/docs/tutorials/ed-2.ipynb +551 -0
  77. easydiffraction-0.17.0/docs/docs/tutorials/ed-2.py +235 -0
  78. easydiffraction-0.17.0/docs/docs/tutorials/ed-20.ipynb +816 -0
  79. easydiffraction-0.17.0/docs/docs/tutorials/ed-20.py +381 -0
  80. easydiffraction-0.17.0/docs/docs/tutorials/ed-21.ipynb +763 -0
  81. easydiffraction-0.17.0/docs/docs/tutorials/ed-21.py +356 -0
  82. easydiffraction-0.17.0/docs/docs/tutorials/ed-22.ipynb +607 -0
  83. easydiffraction-0.17.0/docs/docs/tutorials/ed-22.py +269 -0
  84. easydiffraction-0.17.0/docs/docs/tutorials/ed-23.ipynb +236 -0
  85. easydiffraction-0.17.0/docs/docs/tutorials/ed-23.py +90 -0
  86. easydiffraction-0.17.0/docs/docs/tutorials/ed-24.ipynb +223 -0
  87. easydiffraction-0.17.0/docs/docs/tutorials/ed-24.py +82 -0
  88. easydiffraction-0.17.0/docs/docs/tutorials/ed-3.ipynb +1600 -0
  89. easydiffraction-0.17.0/docs/docs/tutorials/ed-3.py +637 -0
  90. easydiffraction-0.17.0/docs/docs/tutorials/ed-4.ipynb +713 -0
  91. easydiffraction-0.17.0/docs/docs/tutorials/ed-4.py +321 -0
  92. easydiffraction-0.17.0/docs/docs/tutorials/ed-5.ipynb +664 -0
  93. easydiffraction-0.17.0/docs/docs/tutorials/ed-5.py +300 -0
  94. easydiffraction-0.17.0/docs/docs/tutorials/ed-6.ipynb +848 -0
  95. easydiffraction-0.17.0/docs/docs/tutorials/ed-6.py +350 -0
  96. easydiffraction-0.17.0/docs/docs/tutorials/ed-7.ipynb +922 -0
  97. easydiffraction-0.17.0/docs/docs/tutorials/ed-7.py +352 -0
  98. easydiffraction-0.17.0/docs/docs/tutorials/ed-8.ipynb +732 -0
  99. easydiffraction-0.17.0/docs/docs/tutorials/ed-8.py +367 -0
  100. easydiffraction-0.17.0/docs/docs/tutorials/ed-9.ipynb +695 -0
  101. easydiffraction-0.17.0/docs/docs/tutorials/ed-9.py +304 -0
  102. easydiffraction-0.17.0/docs/docs/tutorials/index.json +149 -0
  103. easydiffraction-0.17.0/docs/docs/tutorials/index.md +132 -0
  104. easydiffraction-0.17.0/docs/docs/user-guide/analysis-workflow/analysis.md +376 -0
  105. easydiffraction-0.17.0/docs/docs/user-guide/analysis-workflow/project.md +279 -0
  106. easydiffraction-0.17.0/docs/docs/user-guide/first-steps.md +189 -0
  107. easydiffraction-0.17.0/docs/mkdocs.yml +243 -0
  108. easydiffraction-0.17.0/pixi.lock +13107 -0
  109. easydiffraction-0.17.0/pixi.toml +298 -0
  110. easydiffraction-0.17.0/pyproject.toml +413 -0
  111. easydiffraction-0.17.0/src/easydiffraction/__init__.py +19 -0
  112. easydiffraction-0.17.0/src/easydiffraction/__main__.py +245 -0
  113. easydiffraction-0.17.0/src/easydiffraction/analysis/__init__.py +68 -0
  114. easydiffraction-0.17.0/src/easydiffraction/analysis/analysis.py +2116 -0
  115. easydiffraction-0.17.0/src/easydiffraction/analysis/calculators/cryspy.py +1239 -0
  116. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/__init__.py +46 -0
  117. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/aliases/default.py +143 -0
  118. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_convergence/__init__.py +7 -0
  119. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_convergence/default.py +121 -0
  120. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_convergence/factory.py +17 -0
  121. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_distribution_caches/__init__.py +12 -0
  122. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_distribution_caches/default.py +151 -0
  123. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_distribution_caches/factory.py +17 -0
  124. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_pair_caches/__init__.py +8 -0
  125. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_pair_caches/default.py +267 -0
  126. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_pair_caches/factory.py +17 -0
  127. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_parameter_posteriors/__init__.py +12 -0
  128. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_parameter_posteriors/default.py +242 -0
  129. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_parameter_posteriors/factory.py +17 -0
  130. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_predictive_datasets/__init__.py +12 -0
  131. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_predictive_datasets/default.py +260 -0
  132. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_predictive_datasets/factory.py +17 -0
  133. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_result/__init__.py +5 -0
  134. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_result/default.py +215 -0
  135. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_result/factory.py +17 -0
  136. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_sampler/__init__.py +5 -0
  137. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_sampler/default.py +133 -0
  138. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/bayesian_sampler/factory.py +17 -0
  139. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/constraints/default.py +188 -0
  140. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/deterministic_result/__init__.py +7 -0
  141. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/deterministic_result/default.py +187 -0
  142. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/deterministic_result/factory.py +17 -0
  143. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/fit_parameter_correlations/__init__.py +12 -0
  144. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/fit_parameter_correlations/default.py +184 -0
  145. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/fit_parameter_correlations/factory.py +17 -0
  146. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/fit_parameters/__init__.py +6 -0
  147. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/fit_parameters/default.py +177 -0
  148. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/fit_parameters/factory.py +17 -0
  149. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/fit_result/__init__.py +5 -0
  150. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/fit_result/default.py +135 -0
  151. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/fit_result/factory.py +17 -0
  152. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/fitting/__init__.py +5 -0
  153. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/fitting/default.py +125 -0
  154. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/fitting/factory.py +17 -0
  155. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/joint_fit/__init__.py +8 -0
  156. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/joint_fit/default.py +94 -0
  157. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/joint_fit/factory.py +17 -0
  158. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/sequential_fit/__init__.py +7 -0
  159. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/sequential_fit/default.py +124 -0
  160. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/sequential_fit/factory.py +17 -0
  161. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/sequential_fit_extract/__init__.py +14 -0
  162. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/sequential_fit_extract/default.py +162 -0
  163. easydiffraction-0.17.0/src/easydiffraction/analysis/categories/sequential_fit_extract/factory.py +17 -0
  164. easydiffraction-0.17.0/src/easydiffraction/analysis/enums.py +54 -0
  165. easydiffraction-0.17.0/src/easydiffraction/analysis/fit_helpers/__init__.py +8 -0
  166. easydiffraction-0.17.0/src/easydiffraction/analysis/fit_helpers/bayesian.py +777 -0
  167. easydiffraction-0.17.0/src/easydiffraction/analysis/fit_helpers/reporting.py +278 -0
  168. easydiffraction-0.17.0/src/easydiffraction/analysis/fit_helpers/tracking.py +756 -0
  169. easydiffraction-0.17.0/src/easydiffraction/analysis/fitting.py +351 -0
  170. easydiffraction-0.17.0/src/easydiffraction/analysis/minimizers/__init__.py +13 -0
  171. easydiffraction-0.17.0/src/easydiffraction/analysis/minimizers/base.py +424 -0
  172. easydiffraction-0.17.0/src/easydiffraction/analysis/minimizers/bumps.py +481 -0
  173. easydiffraction-0.17.0/src/easydiffraction/analysis/minimizers/bumps_dream.py +1025 -0
  174. easydiffraction-0.17.0/src/easydiffraction/analysis/minimizers/enums.py +62 -0
  175. easydiffraction-0.17.0/src/easydiffraction/analysis/sequential.py +1337 -0
  176. easydiffraction-0.17.0/src/easydiffraction/core/__init__.py +4 -0
  177. easydiffraction-0.17.0/src/easydiffraction/core/category.py +276 -0
  178. easydiffraction-0.17.0/src/easydiffraction/core/category_owner.py +76 -0
  179. easydiffraction-0.17.0/src/easydiffraction/core/collection.py +183 -0
  180. easydiffraction-0.17.0/src/easydiffraction/core/datablock.py +131 -0
  181. easydiffraction-0.17.0/src/easydiffraction/core/guard.py +270 -0
  182. easydiffraction-0.17.0/src/easydiffraction/core/identity.py +85 -0
  183. easydiffraction-0.17.0/src/easydiffraction/core/singleton.py +139 -0
  184. easydiffraction-0.17.0/src/easydiffraction/core/validation.py +344 -0
  185. easydiffraction-0.17.0/src/easydiffraction/core/variable.py +676 -0
  186. easydiffraction-0.17.0/src/easydiffraction/crystallography/crystallography.py +651 -0
  187. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/background/chebyshev.py +186 -0
  188. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/background/line_segment.py +191 -0
  189. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/calculation/default.py +106 -0
  190. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py +706 -0
  191. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/data/total_pd.py +379 -0
  192. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/diffrn/default.py +136 -0
  193. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/excluded_regions/default.py +179 -0
  194. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/experiment_type/default.py +142 -0
  195. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/extinction/becker_coppens.py +133 -0
  196. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/instrument/base.py +27 -0
  197. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/linked_crystal/default.py +89 -0
  198. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/linked_phases/default.py +99 -0
  199. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/peak/base.py +40 -0
  200. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories/refln/bragg_sc.py +438 -0
  201. easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/collection.py +155 -0
  202. easydiffraction-0.17.0/src/easydiffraction/datablocks/structure/categories/atom_site_aniso/default.py +241 -0
  203. easydiffraction-0.17.0/src/easydiffraction/datablocks/structure/categories/atom_sites/default.py +691 -0
  204. easydiffraction-0.17.0/src/easydiffraction/datablocks/structure/categories/cell/default.py +243 -0
  205. easydiffraction-0.17.0/src/easydiffraction/datablocks/structure/categories/space_group/default.py +163 -0
  206. easydiffraction-0.17.0/src/easydiffraction/display/plotters/ascii.py +336 -0
  207. easydiffraction-0.17.0/src/easydiffraction/display/plotters/base.py +371 -0
  208. easydiffraction-0.17.0/src/easydiffraction/display/plotters/plotly.py +1857 -0
  209. easydiffraction-0.17.0/src/easydiffraction/display/plotting.py +5973 -0
  210. easydiffraction-0.17.0/src/easydiffraction/display/progress.py +491 -0
  211. easydiffraction-0.17.0/src/easydiffraction/display/tablers/base.py +149 -0
  212. easydiffraction-0.17.0/src/easydiffraction/display/tablers/pandas.py +278 -0
  213. easydiffraction-0.17.0/src/easydiffraction/display/tablers/rich.py +179 -0
  214. easydiffraction-0.17.0/src/easydiffraction/display/tables.py +164 -0
  215. easydiffraction-0.17.0/src/easydiffraction/io/ascii.py +271 -0
  216. easydiffraction-0.17.0/src/easydiffraction/io/cif/serialize.py +1006 -0
  217. easydiffraction-0.17.0/src/easydiffraction/io/results_sidecar.py +652 -0
  218. easydiffraction-0.17.0/src/easydiffraction/project/categories/info/__init__.py +8 -0
  219. easydiffraction-0.17.0/src/easydiffraction/project/categories/info/default.py +175 -0
  220. easydiffraction-0.17.0/src/easydiffraction/project/categories/info/factory.py +17 -0
  221. easydiffraction-0.17.0/src/easydiffraction/project/categories/rendering/__init__.py +8 -0
  222. easydiffraction-0.17.0/src/easydiffraction/project/categories/rendering/default.py +165 -0
  223. easydiffraction-0.17.0/src/easydiffraction/project/categories/rendering/factory.py +17 -0
  224. easydiffraction-0.17.0/src/easydiffraction/project/categories/verbosity/__init__.py +8 -0
  225. easydiffraction-0.17.0/src/easydiffraction/project/categories/verbosity/default.py +55 -0
  226. easydiffraction-0.17.0/src/easydiffraction/project/categories/verbosity/factory.py +17 -0
  227. easydiffraction-0.17.0/src/easydiffraction/project/display.py +849 -0
  228. easydiffraction-0.17.0/src/easydiffraction/project/project.py +621 -0
  229. easydiffraction-0.17.0/src/easydiffraction/project/project_config.py +55 -0
  230. easydiffraction-0.17.0/src/easydiffraction/project/project_info.py +9 -0
  231. easydiffraction-0.17.0/src/easydiffraction/summary/summary.py +245 -0
  232. easydiffraction-0.17.0/src/easydiffraction/utils/environment.py +261 -0
  233. easydiffraction-0.17.0/src/easydiffraction/utils/logging.py +733 -0
  234. easydiffraction-0.17.0/src/easydiffraction/utils/utils.py +975 -0
  235. easydiffraction-0.17.0/tests/functional/test_fitting_workflow.py +189 -0
  236. easydiffraction-0.17.0/tests/functional/test_project_lifecycle.py +118 -0
  237. easydiffraction-0.17.0/tests/functional/test_structure_workflow.py +239 -0
  238. easydiffraction-0.17.0/tests/functional/test_switchable_categories.py +65 -0
  239. easydiffraction-0.17.0/tests/integration/fitting/conftest.py +90 -0
  240. easydiffraction-0.17.0/tests/integration/fitting/test_analysis_and_fit_category_support.py +338 -0
  241. easydiffraction-0.17.0/tests/integration/fitting/test_analysis_display.py +76 -0
  242. easydiffraction-0.17.0/tests/integration/fitting/test_aniso_adp_fitting.py +106 -0
  243. easydiffraction-0.17.0/tests/integration/fitting/test_bayesian_dream.py +197 -0
  244. easydiffraction-0.17.0/tests/integration/fitting/test_bayesian_helper_support.py +670 -0
  245. easydiffraction-0.17.0/tests/integration/fitting/test_bayesian_tracker_and_base.py +511 -0
  246. easydiffraction-0.17.0/tests/integration/fitting/test_bumps_dream_support.py +711 -0
  247. easydiffraction-0.17.0/tests/integration/fitting/test_cli_entrypoints.py +182 -0
  248. easydiffraction-0.17.0/tests/integration/fitting/test_exploration_help.py +169 -0
  249. easydiffraction-0.17.0/tests/integration/fitting/test_multi.py +236 -0
  250. easydiffraction-0.17.0/tests/integration/fitting/test_plotting.py +29 -0
  251. easydiffraction-0.17.0/tests/integration/fitting/test_powder-diffraction_constant-wavelength.py +536 -0
  252. easydiffraction-0.17.0/tests/integration/fitting/test_powder-diffraction_joint-fit.py +323 -0
  253. easydiffraction-0.17.0/tests/integration/fitting/test_powder-diffraction_time-of-flight.py +225 -0
  254. easydiffraction-0.17.0/tests/integration/fitting/test_project_load.py +254 -0
  255. easydiffraction-0.17.0/tests/integration/fitting/test_sequential.py +398 -0
  256. easydiffraction-0.17.0/tests/integration/scipp-analysis/dream/test_package_import.py +59 -0
  257. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/calculators/test_cryspy.py +204 -0
  258. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/fitting/test_default.py +37 -0
  259. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/fitting/test_factory.py +24 -0
  260. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/sequential_fit/test_default.py +35 -0
  261. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/sequential_fit/test_factory.py +24 -0
  262. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/sequential_fit_extract/test_default.py +66 -0
  263. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/sequential_fit_extract/test_factory.py +32 -0
  264. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/test_bayesian_convergence.py +17 -0
  265. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/test_bayesian_distribution_caches.py +17 -0
  266. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/test_bayesian_pair_caches.py +15 -0
  267. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/test_bayesian_parameter_posteriors.py +17 -0
  268. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/test_bayesian_predictive_datasets.py +17 -0
  269. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/test_bayesian_result.py +13 -0
  270. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/test_bayesian_sampler.py +13 -0
  271. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/test_constraints.py +63 -0
  272. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/test_deterministic_result.py +17 -0
  273. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/test_fit.py +85 -0
  274. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/test_fit_parameter_correlations.py +17 -0
  275. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/test_fit_parameters.py +13 -0
  276. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/test_fit_result.py +13 -0
  277. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/test_fit_state.py +207 -0
  278. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/categories/test_joint_fit_experiments.py +17 -0
  279. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/fit_helpers/test_bayesian.py +385 -0
  280. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/fit_helpers/test_reporting.py +127 -0
  281. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/fit_helpers/test_tracking.py +126 -0
  282. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/minimizers/test_base.py +291 -0
  283. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/minimizers/test_bumps.py +548 -0
  284. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/minimizers/test_bumps_dream.py +384 -0
  285. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/minimizers/test_dfols.py +69 -0
  286. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/minimizers/test_enums.py +39 -0
  287. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/minimizers/test_factory.py +87 -0
  288. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/minimizers/test_lmfit.py +114 -0
  289. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/test_analysis.py +301 -0
  290. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/test_analysis_access_params.py +297 -0
  291. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/test_analysis_coverage.py +306 -0
  292. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/test_enums.py +36 -0
  293. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/test_fitting.py +285 -0
  294. easydiffraction-0.17.0/tests/unit/easydiffraction/analysis/test_sequential.py +728 -0
  295. easydiffraction-0.17.0/tests/unit/easydiffraction/core/test_category.py +255 -0
  296. easydiffraction-0.17.0/tests/unit/easydiffraction/core/test_category_owner.py +134 -0
  297. easydiffraction-0.17.0/tests/unit/easydiffraction/core/test_datablock.py +195 -0
  298. easydiffraction-0.17.0/tests/unit/easydiffraction/core/test_parameters.py +241 -0
  299. easydiffraction-0.17.0/tests/unit/easydiffraction/crystallography/test_crystallography_coverage.py +156 -0
  300. easydiffraction-0.17.0/tests/unit/easydiffraction/crystallography/test_crystallography_wyckoff.py +86 -0
  301. easydiffraction-0.17.0/tests/unit/easydiffraction/datablocks/experiment/categories/data/test_bragg_pd.py +169 -0
  302. easydiffraction-0.17.0/tests/unit/easydiffraction/datablocks/experiment/categories/data/test_total_pd.py +116 -0
  303. easydiffraction-0.17.0/tests/unit/easydiffraction/datablocks/experiment/categories/refln/test_bragg_sc.py +110 -0
  304. easydiffraction-0.17.0/tests/unit/easydiffraction/display/plotters/test_ascii.py +308 -0
  305. easydiffraction-0.17.0/tests/unit/easydiffraction/display/plotters/test_plotly.py +970 -0
  306. easydiffraction-0.17.0/tests/unit/easydiffraction/display/tablers/test_pandas.py +47 -0
  307. easydiffraction-0.17.0/tests/unit/easydiffraction/display/tablers/test_rich.py +44 -0
  308. easydiffraction-0.17.0/tests/unit/easydiffraction/display/test_plotting.py +2470 -0
  309. easydiffraction-0.17.0/tests/unit/easydiffraction/display/test_plotting_coverage.py +573 -0
  310. easydiffraction-0.17.0/tests/unit/easydiffraction/display/test_progress.py +315 -0
  311. easydiffraction-0.17.0/tests/unit/easydiffraction/display/test_tables.py +90 -0
  312. easydiffraction-0.17.0/tests/unit/easydiffraction/io/cif/test_serialize.py +124 -0
  313. easydiffraction-0.17.0/tests/unit/easydiffraction/io/cif/test_serialize_category_owner_baseline.py +98 -0
  314. easydiffraction-0.17.0/tests/unit/easydiffraction/io/cif/test_serialize_more.py +202 -0
  315. easydiffraction-0.17.0/tests/unit/easydiffraction/io/test_ascii.py +298 -0
  316. easydiffraction-0.17.0/tests/unit/easydiffraction/io/test_results_sidecar.py +138 -0
  317. easydiffraction-0.17.0/tests/unit/easydiffraction/project/categories/info/test_default.py +63 -0
  318. easydiffraction-0.17.0/tests/unit/easydiffraction/project/categories/info/test_factory.py +32 -0
  319. easydiffraction-0.17.0/tests/unit/easydiffraction/project/categories/rendering/test_default.py +69 -0
  320. easydiffraction-0.17.0/tests/unit/easydiffraction/project/categories/rendering/test_factory.py +23 -0
  321. easydiffraction-0.17.0/tests/unit/easydiffraction/project/categories/verbosity/test_default.py +44 -0
  322. easydiffraction-0.17.0/tests/unit/easydiffraction/project/categories/verbosity/test_factory.py +25 -0
  323. easydiffraction-0.17.0/tests/unit/easydiffraction/project/test_display.py +668 -0
  324. easydiffraction-0.17.0/tests/unit/easydiffraction/project/test_project.py +123 -0
  325. easydiffraction-0.17.0/tests/unit/easydiffraction/project/test_project_config.py +129 -0
  326. easydiffraction-0.17.0/tests/unit/easydiffraction/project/test_project_load.py +318 -0
  327. easydiffraction-0.17.0/tests/unit/easydiffraction/project/test_project_save.py +123 -0
  328. easydiffraction-0.17.0/tests/unit/easydiffraction/summary/test_summary.py +73 -0
  329. easydiffraction-0.17.0/tests/unit/easydiffraction/summary/test_summary_details.py +168 -0
  330. easydiffraction-0.17.0/tests/unit/easydiffraction/test___main__.py +260 -0
  331. easydiffraction-0.17.0/tests/unit/easydiffraction/utils/test_environment.py +127 -0
  332. easydiffraction-0.17.0/tests/unit/easydiffraction/utils/test_utils.py +393 -0
  333. easydiffraction-0.17.0/tests/unit/easydiffraction/utils/test_utils_coverage.py +504 -0
  334. easydiffraction-0.17.0/tests/unit/test_benchmark_tutorials.py +133 -0
  335. easydiffraction-0.17.0/tools/benchmark_tutorials.py +216 -0
  336. easydiffraction-0.17.0/tools/generate_package_docs.py +172 -0
  337. easydiffraction-0.17.0/tools/param_consistency.py +680 -0
  338. easydiffraction-0.16.0/.copier-answers.yml +0 -26
  339. easydiffraction-0.16.0/.github/actions/setup-pixi/action.yml +0 -44
  340. easydiffraction-0.16.0/.github/copilot-instructions.md +0 -193
  341. easydiffraction-0.16.0/.github/workflows/coverage.yml +0 -96
  342. easydiffraction-0.16.0/.github/workflows/dashboard.yml +0 -111
  343. easydiffraction-0.16.0/.github/workflows/docs.yml +0 -184
  344. easydiffraction-0.16.0/.github/workflows/issues-labels.yml +0 -51
  345. easydiffraction-0.16.0/.github/workflows/pr-labels.yml +0 -56
  346. easydiffraction-0.16.0/.github/workflows/release-pr.yml +0 -55
  347. easydiffraction-0.16.0/.github/workflows/test.yml +0 -321
  348. easydiffraction-0.16.0/.gitignore +0 -52
  349. easydiffraction-0.16.0/CONTRIBUTING.md +0 -446
  350. easydiffraction-0.16.0/PKG-INFO +0 -136
  351. easydiffraction-0.16.0/codecov.yml +0 -13
  352. easydiffraction-0.16.0/docs/architecture/package-structure-full.md +0 -425
  353. easydiffraction-0.16.0/docs/architecture/package-structure-short.md +0 -224
  354. easydiffraction-0.16.0/docs/dev/adp_implementation.md +0 -321
  355. easydiffraction-0.16.0/docs/dev/architecture.md +0 -1442
  356. easydiffraction-0.16.0/docs/dev/cryspy-dwf-bug.md +0 -126
  357. easydiffraction-0.16.0/docs/dev/issues_closed.md +0 -135
  358. easydiffraction-0.16.0/docs/dev/issues_open.md +0 -1548
  359. easydiffraction-0.16.0/docs/dev/package-structure-full.md +0 -412
  360. easydiffraction-0.16.0/docs/dev/package-structure-short.md +0 -220
  361. easydiffraction-0.16.0/docs/dev/plan_powder-chart-y-range.md +0 -138
  362. easydiffraction-0.16.0/docs/docs/cli/index.md +0 -90
  363. easydiffraction-0.16.0/docs/docs/installation-and-setup/index.md +0 -297
  364. easydiffraction-0.16.0/docs/docs/tutorials/ed-1.ipynb +0 -283
  365. easydiffraction-0.16.0/docs/docs/tutorials/ed-1.py +0 -110
  366. easydiffraction-0.16.0/docs/docs/tutorials/ed-10.ipynb +0 -242
  367. easydiffraction-0.16.0/docs/docs/tutorials/ed-10.py +0 -92
  368. easydiffraction-0.16.0/docs/docs/tutorials/ed-11.ipynb +0 -273
  369. easydiffraction-0.16.0/docs/docs/tutorials/ed-11.py +0 -104
  370. easydiffraction-0.16.0/docs/docs/tutorials/ed-12.ipynb +0 -313
  371. easydiffraction-0.16.0/docs/docs/tutorials/ed-12.py +0 -123
  372. easydiffraction-0.16.0/docs/docs/tutorials/ed-13.ipynb +0 -2675
  373. easydiffraction-0.16.0/docs/docs/tutorials/ed-13.py +0 -1516
  374. easydiffraction-0.16.0/docs/docs/tutorials/ed-14.ipynb +0 -451
  375. easydiffraction-0.16.0/docs/docs/tutorials/ed-14.py +0 -159
  376. easydiffraction-0.16.0/docs/docs/tutorials/ed-15.ipynb +0 -410
  377. easydiffraction-0.16.0/docs/docs/tutorials/ed-15.py +0 -132
  378. easydiffraction-0.16.0/docs/docs/tutorials/ed-16.ipynb +0 -615
  379. easydiffraction-0.16.0/docs/docs/tutorials/ed-16.py +0 -251
  380. easydiffraction-0.16.0/docs/docs/tutorials/ed-17.ipynb +0 -828
  381. easydiffraction-0.16.0/docs/docs/tutorials/ed-17.py +0 -406
  382. easydiffraction-0.16.0/docs/docs/tutorials/ed-18.ipynb +0 -180
  383. easydiffraction-0.16.0/docs/docs/tutorials/ed-18.py +0 -56
  384. easydiffraction-0.16.0/docs/docs/tutorials/ed-2.ipynb +0 -533
  385. easydiffraction-0.16.0/docs/docs/tutorials/ed-2.py +0 -229
  386. easydiffraction-0.16.0/docs/docs/tutorials/ed-20.ipynb +0 -816
  387. easydiffraction-0.16.0/docs/docs/tutorials/ed-20.py +0 -381
  388. easydiffraction-0.16.0/docs/docs/tutorials/ed-3.ipynb +0 -1654
  389. easydiffraction-0.16.0/docs/docs/tutorials/ed-3.py +0 -655
  390. easydiffraction-0.16.0/docs/docs/tutorials/ed-4.ipynb +0 -713
  391. easydiffraction-0.16.0/docs/docs/tutorials/ed-4.py +0 -321
  392. easydiffraction-0.16.0/docs/docs/tutorials/ed-5.ipynb +0 -664
  393. easydiffraction-0.16.0/docs/docs/tutorials/ed-5.py +0 -300
  394. easydiffraction-0.16.0/docs/docs/tutorials/ed-6.ipynb +0 -848
  395. easydiffraction-0.16.0/docs/docs/tutorials/ed-6.py +0 -350
  396. easydiffraction-0.16.0/docs/docs/tutorials/ed-7.ipynb +0 -922
  397. easydiffraction-0.16.0/docs/docs/tutorials/ed-7.py +0 -352
  398. easydiffraction-0.16.0/docs/docs/tutorials/ed-8.ipynb +0 -732
  399. easydiffraction-0.16.0/docs/docs/tutorials/ed-8.py +0 -367
  400. easydiffraction-0.16.0/docs/docs/tutorials/ed-9.ipynb +0 -695
  401. easydiffraction-0.16.0/docs/docs/tutorials/ed-9.py +0 -304
  402. easydiffraction-0.16.0/docs/docs/tutorials/index.json +0 -135
  403. easydiffraction-0.16.0/docs/docs/tutorials/index.md +0 -107
  404. easydiffraction-0.16.0/docs/docs/user-guide/analysis-workflow/analysis.md +0 -376
  405. easydiffraction-0.16.0/docs/docs/user-guide/analysis-workflow/project.md +0 -271
  406. easydiffraction-0.16.0/docs/docs/user-guide/first-steps.md +0 -190
  407. easydiffraction-0.16.0/docs/mkdocs.yml +0 -233
  408. easydiffraction-0.16.0/pixi.lock +0 -12092
  409. easydiffraction-0.16.0/pixi.toml +0 -294
  410. easydiffraction-0.16.0/pyproject.toml +0 -414
  411. easydiffraction-0.16.0/src/easydiffraction/__init__.py +0 -18
  412. easydiffraction-0.16.0/src/easydiffraction/__main__.py +0 -110
  413. easydiffraction-0.16.0/src/easydiffraction/analysis/__init__.py +0 -2
  414. easydiffraction-0.16.0/src/easydiffraction/analysis/analysis.py +0 -885
  415. easydiffraction-0.16.0/src/easydiffraction/analysis/calculators/cryspy.py +0 -1233
  416. easydiffraction-0.16.0/src/easydiffraction/analysis/categories/aliases/default.py +0 -143
  417. easydiffraction-0.16.0/src/easydiffraction/analysis/categories/constraints/default.py +0 -134
  418. easydiffraction-0.16.0/src/easydiffraction/analysis/categories/fit/__init__.py +0 -6
  419. easydiffraction-0.16.0/src/easydiffraction/analysis/categories/fit/default.py +0 -200
  420. easydiffraction-0.16.0/src/easydiffraction/analysis/categories/fit/enums.py +0 -30
  421. easydiffraction-0.16.0/src/easydiffraction/analysis/categories/fit/factory.py +0 -17
  422. easydiffraction-0.16.0/src/easydiffraction/analysis/categories/joint_fit_experiments/__init__.py +0 -5
  423. easydiffraction-0.16.0/src/easydiffraction/analysis/categories/joint_fit_experiments/default.py +0 -100
  424. easydiffraction-0.16.0/src/easydiffraction/analysis/categories/joint_fit_experiments/factory.py +0 -17
  425. easydiffraction-0.16.0/src/easydiffraction/analysis/fit_helpers/reporting.py +0 -250
  426. easydiffraction-0.16.0/src/easydiffraction/analysis/fit_helpers/tracking.py +0 -290
  427. easydiffraction-0.16.0/src/easydiffraction/analysis/fitting.py +0 -242
  428. easydiffraction-0.16.0/src/easydiffraction/analysis/minimizers/__init__.py +0 -11
  429. easydiffraction-0.16.0/src/easydiffraction/analysis/minimizers/base.py +0 -311
  430. easydiffraction-0.16.0/src/easydiffraction/analysis/minimizers/bumps.py +0 -266
  431. easydiffraction-0.16.0/src/easydiffraction/analysis/minimizers/enums.py +0 -51
  432. easydiffraction-0.16.0/src/easydiffraction/analysis/sequential.py +0 -886
  433. easydiffraction-0.16.0/src/easydiffraction/core/category.py +0 -258
  434. easydiffraction-0.16.0/src/easydiffraction/core/collection.py +0 -170
  435. easydiffraction-0.16.0/src/easydiffraction/core/datablock.py +0 -203
  436. easydiffraction-0.16.0/src/easydiffraction/core/guard.py +0 -238
  437. easydiffraction-0.16.0/src/easydiffraction/core/identity.py +0 -78
  438. easydiffraction-0.16.0/src/easydiffraction/core/singleton.py +0 -139
  439. easydiffraction-0.16.0/src/easydiffraction/core/validation.py +0 -342
  440. easydiffraction-0.16.0/src/easydiffraction/core/variable.py +0 -509
  441. easydiffraction-0.16.0/src/easydiffraction/crystallography/crystallography.py +0 -651
  442. easydiffraction-0.16.0/src/easydiffraction/datablocks/experiment/categories/background/chebyshev.py +0 -186
  443. easydiffraction-0.16.0/src/easydiffraction/datablocks/experiment/categories/background/line_segment.py +0 -191
  444. easydiffraction-0.16.0/src/easydiffraction/datablocks/experiment/categories/calculation/default.py +0 -106
  445. easydiffraction-0.16.0/src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py +0 -704
  446. easydiffraction-0.16.0/src/easydiffraction/datablocks/experiment/categories/data/total_pd.py +0 -379
  447. easydiffraction-0.16.0/src/easydiffraction/datablocks/experiment/categories/diffrn/default.py +0 -136
  448. easydiffraction-0.16.0/src/easydiffraction/datablocks/experiment/categories/excluded_regions/default.py +0 -178
  449. easydiffraction-0.16.0/src/easydiffraction/datablocks/experiment/categories/experiment_type/default.py +0 -142
  450. easydiffraction-0.16.0/src/easydiffraction/datablocks/experiment/categories/extinction/becker_coppens.py +0 -133
  451. easydiffraction-0.16.0/src/easydiffraction/datablocks/experiment/categories/instrument/base.py +0 -26
  452. easydiffraction-0.16.0/src/easydiffraction/datablocks/experiment/categories/linked_crystal/default.py +0 -89
  453. easydiffraction-0.16.0/src/easydiffraction/datablocks/experiment/categories/linked_phases/default.py +0 -99
  454. easydiffraction-0.16.0/src/easydiffraction/datablocks/experiment/categories/peak/base.py +0 -39
  455. easydiffraction-0.16.0/src/easydiffraction/datablocks/experiment/categories/refln/bragg_sc.py +0 -438
  456. easydiffraction-0.16.0/src/easydiffraction/datablocks/experiment/collection.py +0 -155
  457. easydiffraction-0.16.0/src/easydiffraction/datablocks/structure/categories/atom_site_aniso/default.py +0 -241
  458. easydiffraction-0.16.0/src/easydiffraction/datablocks/structure/categories/atom_sites/default.py +0 -691
  459. easydiffraction-0.16.0/src/easydiffraction/datablocks/structure/categories/cell/default.py +0 -243
  460. easydiffraction-0.16.0/src/easydiffraction/datablocks/structure/categories/space_group/default.py +0 -163
  461. easydiffraction-0.16.0/src/easydiffraction/display/plotters/ascii.py +0 -237
  462. easydiffraction-0.16.0/src/easydiffraction/display/plotters/base.py +0 -354
  463. easydiffraction-0.16.0/src/easydiffraction/display/plotters/plotly.py +0 -1464
  464. easydiffraction-0.16.0/src/easydiffraction/display/plotting.py +0 -1682
  465. easydiffraction-0.16.0/src/easydiffraction/display/tablers/base.py +0 -126
  466. easydiffraction-0.16.0/src/easydiffraction/display/tablers/pandas.py +0 -246
  467. easydiffraction-0.16.0/src/easydiffraction/display/tablers/rich.py +0 -177
  468. easydiffraction-0.16.0/src/easydiffraction/display/tables.py +0 -134
  469. easydiffraction-0.16.0/src/easydiffraction/io/ascii.py +0 -260
  470. easydiffraction-0.16.0/src/easydiffraction/io/cif/serialize.py +0 -734
  471. easydiffraction-0.16.0/src/easydiffraction/project/categories/display/__init__.py +0 -8
  472. easydiffraction-0.16.0/src/easydiffraction/project/categories/display/default.py +0 -117
  473. easydiffraction-0.16.0/src/easydiffraction/project/categories/display/factory.py +0 -17
  474. easydiffraction-0.16.0/src/easydiffraction/project/project.py +0 -471
  475. easydiffraction-0.16.0/src/easydiffraction/project/project_info.py +0 -134
  476. easydiffraction-0.16.0/src/easydiffraction/summary/__init__.py +0 -2
  477. easydiffraction-0.16.0/src/easydiffraction/summary/summary.py +0 -240
  478. easydiffraction-0.16.0/src/easydiffraction/utils/environment.py +0 -167
  479. easydiffraction-0.16.0/src/easydiffraction/utils/logging.py +0 -733
  480. easydiffraction-0.16.0/src/easydiffraction/utils/utils.py +0 -772
  481. easydiffraction-0.16.0/tests/functional/test_fitting_workflow.py +0 -185
  482. easydiffraction-0.16.0/tests/functional/test_project_lifecycle.py +0 -118
  483. easydiffraction-0.16.0/tests/functional/test_structure_workflow.py +0 -239
  484. easydiffraction-0.16.0/tests/functional/test_switchable_categories.py +0 -65
  485. easydiffraction-0.16.0/tests/integration/fitting/conftest.py +0 -89
  486. easydiffraction-0.16.0/tests/integration/fitting/test_analysis_display.py +0 -76
  487. easydiffraction-0.16.0/tests/integration/fitting/test_aniso_adp_fitting.py +0 -105
  488. easydiffraction-0.16.0/tests/integration/fitting/test_exploration_help.py +0 -148
  489. easydiffraction-0.16.0/tests/integration/fitting/test_multi.py +0 -236
  490. easydiffraction-0.16.0/tests/integration/fitting/test_plotting.py +0 -29
  491. easydiffraction-0.16.0/tests/integration/fitting/test_powder-diffraction_constant-wavelength.py +0 -536
  492. easydiffraction-0.16.0/tests/integration/fitting/test_powder-diffraction_joint-fit.py +0 -323
  493. easydiffraction-0.16.0/tests/integration/fitting/test_powder-diffraction_time-of-flight.py +0 -225
  494. easydiffraction-0.16.0/tests/integration/fitting/test_project_load.py +0 -246
  495. easydiffraction-0.16.0/tests/integration/fitting/test_sequential.py +0 -369
  496. easydiffraction-0.16.0/tests/integration/scipp-analysis/dream/test_package_import.py +0 -78
  497. easydiffraction-0.16.0/tests/unit/easydiffraction/analysis/calculators/test_cryspy.py +0 -175
  498. easydiffraction-0.16.0/tests/unit/easydiffraction/analysis/categories/test_constraints.py +0 -16
  499. easydiffraction-0.16.0/tests/unit/easydiffraction/analysis/categories/test_fit.py +0 -92
  500. easydiffraction-0.16.0/tests/unit/easydiffraction/analysis/categories/test_joint_fit_experiments.py +0 -17
  501. easydiffraction-0.16.0/tests/unit/easydiffraction/analysis/fit_helpers/test_reporting.py +0 -61
  502. easydiffraction-0.16.0/tests/unit/easydiffraction/analysis/fit_helpers/test_tracking.py +0 -45
  503. easydiffraction-0.16.0/tests/unit/easydiffraction/analysis/minimizers/test_base.py +0 -121
  504. easydiffraction-0.16.0/tests/unit/easydiffraction/analysis/minimizers/test_bumps.py +0 -415
  505. easydiffraction-0.16.0/tests/unit/easydiffraction/analysis/minimizers/test_dfols.py +0 -65
  506. easydiffraction-0.16.0/tests/unit/easydiffraction/analysis/minimizers/test_enums.py +0 -32
  507. easydiffraction-0.16.0/tests/unit/easydiffraction/analysis/minimizers/test_factory.py +0 -77
  508. easydiffraction-0.16.0/tests/unit/easydiffraction/analysis/minimizers/test_lmfit.py +0 -79
  509. easydiffraction-0.16.0/tests/unit/easydiffraction/analysis/test_analysis.py +0 -122
  510. easydiffraction-0.16.0/tests/unit/easydiffraction/analysis/test_analysis_access_params.py +0 -84
  511. easydiffraction-0.16.0/tests/unit/easydiffraction/analysis/test_analysis_coverage.py +0 -196
  512. easydiffraction-0.16.0/tests/unit/easydiffraction/analysis/test_fitting.py +0 -103
  513. easydiffraction-0.16.0/tests/unit/easydiffraction/analysis/test_sequential.py +0 -302
  514. easydiffraction-0.16.0/tests/unit/easydiffraction/core/test_category.py +0 -102
  515. easydiffraction-0.16.0/tests/unit/easydiffraction/core/test_datablock.py +0 -136
  516. easydiffraction-0.16.0/tests/unit/easydiffraction/core/test_parameters.py +0 -157
  517. easydiffraction-0.16.0/tests/unit/easydiffraction/crystallography/test_crystallography_coverage.py +0 -152
  518. easydiffraction-0.16.0/tests/unit/easydiffraction/crystallography/test_crystallography_wyckoff.py +0 -86
  519. easydiffraction-0.16.0/tests/unit/easydiffraction/datablocks/experiment/categories/data/test_bragg_pd.py +0 -144
  520. easydiffraction-0.16.0/tests/unit/easydiffraction/datablocks/experiment/categories/data/test_total_pd.py +0 -91
  521. easydiffraction-0.16.0/tests/unit/easydiffraction/datablocks/experiment/categories/refln/test_bragg_sc.py +0 -81
  522. easydiffraction-0.16.0/tests/unit/easydiffraction/datablocks/structure/categories/__init__.py +0 -2
  523. easydiffraction-0.16.0/tests/unit/easydiffraction/display/plotters/test_ascii.py +0 -87
  524. easydiffraction-0.16.0/tests/unit/easydiffraction/display/plotters/test_plotly.py +0 -914
  525. easydiffraction-0.16.0/tests/unit/easydiffraction/display/tablers/__init__.py +0 -2
  526. easydiffraction-0.16.0/tests/unit/easydiffraction/display/tablers/test_pandas.py +0 -35
  527. easydiffraction-0.16.0/tests/unit/easydiffraction/display/tablers/test_rich.py +0 -44
  528. easydiffraction-0.16.0/tests/unit/easydiffraction/display/test_plotting.py +0 -940
  529. easydiffraction-0.16.0/tests/unit/easydiffraction/display/test_plotting_coverage.py +0 -537
  530. easydiffraction-0.16.0/tests/unit/easydiffraction/display/test_tables.py +0 -61
  531. easydiffraction-0.16.0/tests/unit/easydiffraction/io/cif/test_serialize.py +0 -124
  532. easydiffraction-0.16.0/tests/unit/easydiffraction/io/cif/test_serialize_more.py +0 -146
  533. easydiffraction-0.16.0/tests/unit/easydiffraction/io/test_ascii.py +0 -253
  534. easydiffraction-0.16.0/tests/unit/easydiffraction/project/categories/display/test_default.py +0 -55
  535. easydiffraction-0.16.0/tests/unit/easydiffraction/project/categories/display/test_factory.py +0 -23
  536. easydiffraction-0.16.0/tests/unit/easydiffraction/project/test_project.py +0 -51
  537. easydiffraction-0.16.0/tests/unit/easydiffraction/project/test_project_load.py +0 -153
  538. easydiffraction-0.16.0/tests/unit/easydiffraction/project/test_project_save.py +0 -40
  539. easydiffraction-0.16.0/tests/unit/easydiffraction/summary/test_summary.py +0 -58
  540. easydiffraction-0.16.0/tests/unit/easydiffraction/summary/test_summary_details.py +0 -168
  541. easydiffraction-0.16.0/tests/unit/easydiffraction/test___main__.py +0 -175
  542. easydiffraction-0.16.0/tests/unit/easydiffraction/utils/test_environment.py +0 -86
  543. easydiffraction-0.16.0/tests/unit/easydiffraction/utils/test_utils.py +0 -366
  544. easydiffraction-0.16.0/tests/unit/easydiffraction/utils/test_utils_coverage.py +0 -468
  545. easydiffraction-0.16.0/tools/generate_package_docs.py +0 -172
  546. easydiffraction-0.16.0/tools/param_consistency.py +0 -680
  547. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/.badgery.yaml +0 -0
  548. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/.codefactorignore +0 -0
  549. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/.github/actions/download-artifact/action.yml +0 -0
  550. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/.github/actions/github-script/action.yml +0 -0
  551. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/.github/actions/setup-easyscience-bot/action.yml +0 -0
  552. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/.github/actions/upload-artifact/action.yml +0 -0
  553. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/.github/actions/upload-codecov/action.yml +0 -0
  554. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/.github/configs/pages-deployment.json +0 -0
  555. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/.github/configs/rulesets-develop.json +0 -0
  556. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/.github/configs/rulesets-gh-pages.json +0 -0
  557. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/.github/configs/rulesets-master.json +0 -0
  558. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/.github/scripts/backmerge-conflict-issue.js +0 -0
  559. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/.github/scripts/publish-dashboard.sh +0 -0
  560. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/.github/workflows/backmerge.yml +0 -0
  561. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/.github/workflows/cleanup.yml +0 -0
  562. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/.github/workflows/lint-format.yml +0 -0
  563. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/.github/workflows/pypi-publish.yml +0 -0
  564. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/.github/workflows/pypi-test.yml +0 -0
  565. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/.github/workflows/release-notes.yml +0 -0
  566. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/.github/workflows/security.yml +0 -0
  567. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/.github/workflows/test-trigger.yml +0 -0
  568. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/.github/workflows/tutorial-tests-colab.yaml +0 -0
  569. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/.github/workflows/tutorial-tests-trigger.yml +0 -0
  570. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/.github/workflows/tutorial-tests.yml +0 -0
  571. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/.pre-commit-config.yaml +0 -0
  572. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/.prettierignore +0 -0
  573. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/LICENSE +0 -0
  574. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/README.md +0 -0
  575. {easydiffraction-0.16.0/docs/dev β†’ easydiffraction-0.17.0/docs/dev/roadmap}/ROADMAP.md +0 -0
  576. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/api-reference/analysis.md +0 -0
  577. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/api-reference/core.md +0 -0
  578. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/api-reference/crystallography.md +0 -0
  579. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/api-reference/datablocks/experiment.md +0 -0
  580. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/api-reference/datablocks/structure.md +0 -0
  581. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/api-reference/display.md +0 -0
  582. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/api-reference/index.md +0 -0
  583. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/api-reference/io.md +0 -0
  584. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/api-reference/project.md +0 -0
  585. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/api-reference/summary.md +0 -0
  586. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/api-reference/utils.md +0 -0
  587. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/assets/images/favicon.png +0 -0
  588. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/assets/images/logo_dark.svg +0 -0
  589. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/assets/images/logo_light.svg +0 -0
  590. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/assets/images/user-guide/data-acquisition_2d-raw-data.jpg +0 -0
  591. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/assets/images/user-guide/data-acquisition_instrument.png +0 -0
  592. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/assets/images/user-guide/data-analysis_model.png +0 -0
  593. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/assets/images/user-guide/data-analysis_refinement.png +0 -0
  594. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/assets/images/user-guide/data-reduction_1d-pattern.png +0 -0
  595. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/assets/javascripts/extra.js +0 -0
  596. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/assets/javascripts/mathjax.js +0 -0
  597. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/assets/stylesheets/extra.css +0 -0
  598. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/index.md +0 -0
  599. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/introduction/index.md +0 -0
  600. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/user-guide/analysis-workflow/experiment.md +0 -0
  601. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/user-guide/analysis-workflow/index.md +0 -0
  602. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/user-guide/analysis-workflow/model.md +0 -0
  603. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/user-guide/analysis-workflow/summary.md +0 -0
  604. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/user-guide/concept.md +0 -0
  605. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/user-guide/data-format.md +0 -0
  606. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/user-guide/glossary.md +0 -0
  607. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/user-guide/index.md +0 -0
  608. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/user-guide/parameters/_diffrn_radiation.md +0 -0
  609. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/user-guide/parameters/_diffrn_radiation_wavelength.md +0 -0
  610. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/user-guide/parameters/_exptl_crystal.md +0 -0
  611. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/user-guide/parameters/_extinction.md +0 -0
  612. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/user-guide/parameters/_pd_calib.md +0 -0
  613. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/user-guide/parameters/atom_site.md +0 -0
  614. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/user-guide/parameters/background.md +0 -0
  615. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/user-guide/parameters/cell.md +0 -0
  616. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/user-guide/parameters/expt_type.md +0 -0
  617. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/user-guide/parameters/instrument.md +0 -0
  618. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/user-guide/parameters/linked_phases.md +0 -0
  619. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/user-guide/parameters/pd_meas.md +0 -0
  620. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/user-guide/parameters/peak.md +0 -0
  621. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/user-guide/parameters/space_group.md +0 -0
  622. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/docs/user-guide/parameters.md +0 -0
  623. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/includes/abbreviations.md +0 -0
  624. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/overrides/.icons/app.svg +0 -0
  625. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/overrides/.icons/easydiffraction.svg +0 -0
  626. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/overrides/.icons/easyscience.svg +0 -0
  627. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/overrides/.icons/google-colab.svg +0 -0
  628. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/overrides/main.html +0 -0
  629. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/docs/overrides/partials/logo.html +0 -0
  630. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/prettierrc.toml +0 -0
  631. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/analysis/calculators/__init__.py +0 -0
  632. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/analysis/calculators/base.py +0 -0
  633. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/analysis/calculators/crysfml.py +0 -0
  634. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/analysis/calculators/factory.py +0 -0
  635. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/analysis/calculators/pdffit.py +0 -0
  636. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/analysis/categories/aliases/__init__.py +0 -0
  637. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/analysis/categories/aliases/factory.py +0 -0
  638. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/analysis/categories/constraints/__init__.py +0 -0
  639. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/analysis/categories/constraints/factory.py +0 -0
  640. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/analysis/fit_helpers/metrics.py +0 -0
  641. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/analysis/minimizers/bumps_amoeba.py +0 -0
  642. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/analysis/minimizers/bumps_de.py +0 -0
  643. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/analysis/minimizers/bumps_lm.py +0 -0
  644. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/analysis/minimizers/dfols.py +0 -0
  645. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/analysis/minimizers/factory.py +0 -0
  646. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/analysis/minimizers/lmfit.py +0 -0
  647. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/analysis/minimizers/lmfit_least_squares.py +0 -0
  648. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/analysis/minimizers/lmfit_leastsq.py +0 -0
  649. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/core/diagnostic.py +0 -0
  650. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/core/factory.py +0 -0
  651. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/core/metadata.py +0 -0
  652. {easydiffraction-0.16.0/src/easydiffraction/analysis/categories β†’ easydiffraction-0.17.0/src/easydiffraction/crystallography}/__init__.py +0 -0
  653. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/crystallography/space_groups.pkl.gz +0 -0
  654. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/crystallography/space_groups.py +0 -0
  655. {easydiffraction-0.16.0/src/easydiffraction/analysis/fit_helpers β†’ easydiffraction-0.17.0/src/easydiffraction/datablocks}/__init__.py +0 -0
  656. {easydiffraction-0.16.0/src/easydiffraction/core β†’ easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment}/__init__.py +0 -0
  657. {easydiffraction-0.16.0/src/easydiffraction/crystallography β†’ easydiffraction-0.17.0/src/easydiffraction/datablocks/experiment/categories}/__init__.py +0 -0
  658. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/background/__init__.py +0 -0
  659. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/background/base.py +0 -0
  660. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/background/enums.py +0 -0
  661. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/background/factory.py +0 -0
  662. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/calculation/__init__.py +0 -0
  663. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/calculation/factory.py +0 -0
  664. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/data/__init__.py +0 -0
  665. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/data/factory.py +0 -0
  666. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/diffrn/__init__.py +0 -0
  667. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/diffrn/factory.py +0 -0
  668. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/excluded_regions/__init__.py +0 -0
  669. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/excluded_regions/factory.py +0 -0
  670. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/experiment_type/__init__.py +0 -0
  671. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/experiment_type/factory.py +0 -0
  672. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/extinction/__init__.py +0 -0
  673. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/extinction/factory.py +0 -0
  674. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/instrument/__init__.py +0 -0
  675. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/instrument/cwl.py +0 -0
  676. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/instrument/factory.py +0 -0
  677. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/instrument/tof.py +0 -0
  678. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/linked_crystal/__init__.py +0 -0
  679. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/linked_crystal/factory.py +0 -0
  680. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/linked_phases/__init__.py +0 -0
  681. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/linked_phases/factory.py +0 -0
  682. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/peak/__init__.py +0 -0
  683. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/peak/cwl.py +0 -0
  684. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/peak/cwl_mixins.py +0 -0
  685. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/peak/factory.py +0 -0
  686. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/peak/tof.py +0 -0
  687. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/peak/tof_mixins.py +0 -0
  688. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/peak/total.py +0 -0
  689. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/peak/total_mixins.py +0 -0
  690. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/refln/__init__.py +0 -0
  691. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/refln/bragg_pd.py +0 -0
  692. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/categories/refln/factory.py +0 -0
  693. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/item/__init__.py +0 -0
  694. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/item/base.py +0 -0
  695. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/item/bragg_pd.py +0 -0
  696. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/item/bragg_sc.py +0 -0
  697. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/item/enums.py +0 -0
  698. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/item/factory.py +0 -0
  699. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/experiment/item/total_pd.py +0 -0
  700. {easydiffraction-0.16.0/src/easydiffraction/datablocks β†’ easydiffraction-0.17.0/src/easydiffraction/datablocks/structure}/__init__.py +0 -0
  701. {easydiffraction-0.16.0/src/easydiffraction/datablocks/experiment β†’ easydiffraction-0.17.0/src/easydiffraction/datablocks/structure/categories}/__init__.py +0 -0
  702. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/structure/categories/atom_site_aniso/__init__.py +0 -0
  703. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/structure/categories/atom_site_aniso/factory.py +0 -0
  704. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/structure/categories/atom_sites/__init__.py +0 -0
  705. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/structure/categories/atom_sites/enums.py +0 -0
  706. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/structure/categories/atom_sites/factory.py +0 -0
  707. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/structure/categories/cell/__init__.py +0 -0
  708. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/structure/categories/cell/factory.py +0 -0
  709. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/structure/categories/space_group/__init__.py +0 -0
  710. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/structure/categories/space_group/factory.py +0 -0
  711. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/structure/collection.py +0 -0
  712. {easydiffraction-0.16.0/src/easydiffraction/datablocks/experiment/categories β†’ easydiffraction-0.17.0/src/easydiffraction/datablocks/structure/item}/__init__.py +0 -0
  713. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/structure/item/base.py +0 -0
  714. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/datablocks/structure/item/factory.py +0 -0
  715. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/display/__init__.py +0 -0
  716. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/display/base.py +0 -0
  717. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/display/plotters/__init__.py +0 -0
  718. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/display/tablers/__init__.py +0 -0
  719. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/display/utils.py +0 -0
  720. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/io/__init__.py +0 -0
  721. {easydiffraction-0.16.0/src/easydiffraction/datablocks/structure β†’ easydiffraction-0.17.0/src/easydiffraction/io/cif}/__init__.py +0 -0
  722. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/io/cif/handler.py +0 -0
  723. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/io/cif/parse.py +0 -0
  724. {easydiffraction-0.16.0/src/easydiffraction/datablocks/structure/categories β†’ easydiffraction-0.17.0/src/easydiffraction/project}/__init__.py +0 -0
  725. {easydiffraction-0.16.0/src/easydiffraction/datablocks/structure/item β†’ easydiffraction-0.17.0/src/easydiffraction/project/categories}/__init__.py +0 -0
  726. {easydiffraction-0.16.0/src/easydiffraction/io/cif β†’ easydiffraction-0.17.0/src/easydiffraction/summary}/__init__.py +0 -0
  727. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/utils/__init__.py +0 -0
  728. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/utils/_vendored/__init__.py +0 -0
  729. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/utils/_vendored/jupyter_dark_detect/__init__.py +0 -0
  730. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/utils/_vendored/jupyter_dark_detect/detector.py +0 -0
  731. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/utils/_vendored/theme_detect.py +0 -0
  732. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/src/easydiffraction/utils/enums.py +0 -0
  733. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/functional/conftest.py +0 -0
  734. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/functional/test_adp_switching.py +0 -0
  735. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/functional/test_experiment_workflow.py +0 -0
  736. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/integration/fitting/test_cif_round_trip.py +0 -0
  737. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/integration/fitting/test_pair-distribution-function.py +0 -0
  738. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/integration/fitting/test_single-crystal-diffraction.py +0 -0
  739. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/integration/fitting/test_summary_report.py +0 -0
  740. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/integration/fitting/test_switch-calculator.py +0 -0
  741. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/integration/scipp-analysis/dream/conftest.py +0 -0
  742. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/integration/scipp-analysis/dream/test_analyze_reduced_data.py +0 -0
  743. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/integration/scipp-analysis/dream/test_read_reduced_data.py +0 -0
  744. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/integration/scipp-analysis/dream/test_validate_meta_data.py +0 -0
  745. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/integration/scipp-analysis/dream/test_validate_physical_data.py +0 -0
  746. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/analysis/calculators/test_base.py +0 -0
  747. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/analysis/calculators/test_crysfml.py +0 -0
  748. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/analysis/calculators/test_factory.py +0 -0
  749. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/analysis/calculators/test_pdffit.py +0 -0
  750. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/analysis/categories/test_aliases.py +0 -0
  751. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/analysis/fit_helpers/test_metrics.py +0 -0
  752. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/analysis/minimizers/test_bumps_amoeba.py +0 -0
  753. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/analysis/minimizers/test_bumps_de.py +0 -0
  754. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/analysis/minimizers/test_bumps_lm.py +0 -0
  755. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/analysis/minimizers/test_lmfit_least_squares.py +0 -0
  756. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/analysis/minimizers/test_lmfit_leastsq.py +0 -0
  757. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/analysis/test_analysis_show_empty.py +0 -0
  758. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/core/test_collection.py +0 -0
  759. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/core/test_diagnostic.py +0 -0
  760. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/core/test_factory.py +0 -0
  761. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/core/test_guard.py +0 -0
  762. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/core/test_identity.py +0 -0
  763. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/core/test_metadata.py +0 -0
  764. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/core/test_singletons.py +0 -0
  765. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/core/test_validation.py +0 -0
  766. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/crystallography/test_crystallography.py +0 -0
  767. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/crystallography/test_space_groups.py +0 -0
  768. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/crystallography/test_space_groups_coverage.py +0 -0
  769. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/background/test_base.py +0 -0
  770. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/background/test_chebyshev.py +0 -0
  771. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/background/test_enums.py +0 -0
  772. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/background/test_factory.py +0 -0
  773. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/background/test_line_segment.py +0 -0
  774. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/calculation/test_default.py +0 -0
  775. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/calculation/test_factory.py +0 -0
  776. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/data/test_factory.py +0 -0
  777. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/instrument/test_base.py +0 -0
  778. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/instrument/test_cwl.py +0 -0
  779. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/instrument/test_factory.py +0 -0
  780. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/instrument/test_tof.py +0 -0
  781. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_base.py +0 -0
  782. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_cwl.py +0 -0
  783. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_cwl_mixins.py +0 -0
  784. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_factory.py +0 -0
  785. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_tof.py +0 -0
  786. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_tof_mixins.py +0 -0
  787. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_total.py +0 -0
  788. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_total_mixins.py +0 -0
  789. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/refln/test_bragg_pd.py +0 -0
  790. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/refln/test_factory.py +0 -0
  791. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/test_diffrn.py +0 -0
  792. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/test_excluded_regions.py +0 -0
  793. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/test_experiment_type.py +0 -0
  794. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/test_extinction.py +0 -0
  795. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/test_linked_crystal.py +0 -0
  796. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/categories/test_linked_phases.py +0 -0
  797. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_base.py +0 -0
  798. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_base_coverage.py +0 -0
  799. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_bragg_pd.py +0 -0
  800. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_bragg_sc.py +0 -0
  801. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_bragg_sc_coverage.py +0 -0
  802. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_enums.py +0 -0
  803. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_enums_coverage.py +0 -0
  804. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_factory.py +0 -0
  805. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_factory_coverage.py +0 -0
  806. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/item/test_total_pd.py +0 -0
  807. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/experiment/test_collection.py +0 -0
  808. {easydiffraction-0.16.0/src/easydiffraction/project β†’ easydiffraction-0.17.0/tests/unit/easydiffraction/datablocks/structure/categories}/__init__.py +0 -0
  809. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/structure/categories/test_atom_site_aniso.py +0 -0
  810. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/structure/categories/test_atom_sites.py +0 -0
  811. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/structure/categories/test_cell.py +0 -0
  812. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/structure/categories/test_space_group.py +0 -0
  813. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/structure/item/test_base.py +0 -0
  814. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/structure/item/test_base_coverage.py +0 -0
  815. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/structure/item/test_factory.py +0 -0
  816. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/structure/test_collection.py +0 -0
  817. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/datablocks/structure/test_collection_coverage.py +0 -0
  818. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/display/plotters/test_base.py +0 -0
  819. {easydiffraction-0.16.0/src/easydiffraction/project/categories β†’ easydiffraction-0.17.0/tests/unit/easydiffraction/display/tablers}/__init__.py +0 -0
  820. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/display/tablers/test_base.py +0 -0
  821. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/display/test_base.py +0 -0
  822. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/display/test_utils.py +0 -0
  823. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/io/cif/test_handler.py +0 -0
  824. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/io/cif/test_parse.py +0 -0
  825. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/project/test_project_info.py +0 -0
  826. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/project/test_project_load_and_summary_wrap.py +0 -0
  827. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/test___init__.py +0 -0
  828. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/utils/test_enums.py +0 -0
  829. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/utils/test_environment_coverage.py +0 -0
  830. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/utils/test_logging.py +0 -0
  831. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/utils/test_logging_coverage.py +0 -0
  832. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tests/unit/easydiffraction/utils/test_theme_detect.py +0 -0
  833. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tools/gen_tests_scaffold.py +0 -0
  834. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tools/license_headers.py +0 -0
  835. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tools/naming_check.py +0 -0
  836. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tools/test_scripts.py +0 -0
  837. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tools/test_structure_check.py +0 -0
  838. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tools/tweak_notebooks.py +0 -0
  839. {easydiffraction-0.16.0 β†’ easydiffraction-0.17.0}/tools/update_docs_assets.py +0 -0
  840. {easydiffraction-0.16.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,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,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,94 @@
1
+ name: Coverage checks
2
+
3
+ on:
4
+ # Trigger the workflow on push to develop
5
+ push:
6
+ branches:
7
+ - develop
8
+ # Trigger the workflow on pull request
9
+ pull_request:
10
+ # Allows you to run this workflow manually from the Actions tab
11
+ workflow_dispatch:
12
+
13
+ # Need permissions to trigger the dashboard build workflow
14
+ permissions:
15
+ actions: write
16
+ contents: read
17
+
18
+ # Allow only one concurrent workflow per PR or branch ref.
19
+ # Cancel in-progress runs only for pull requests, but let branch push runs finish.
20
+ concurrency:
21
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
22
+ cancel-in-progress: ${{ github.event_name == 'pull_request' }}
23
+
24
+ # Set the environment variables to be used in all jobs defined in this workflow
25
+ env:
26
+ CI_BRANCH: ${{ github.head_ref || github.ref_name }}
27
+
28
+ jobs:
29
+ # Job 1: Run docstring coverage
30
+ docstring-coverage:
31
+ runs-on: ubuntu-latest
32
+
33
+ steps:
34
+ - name: Check-out repository
35
+ uses: actions/checkout@v6
36
+
37
+ - name: Set up pixi
38
+ uses: ./.github/actions/setup-pixi
39
+
40
+ - name: Run docstring coverage
41
+ run: pixi run docstring-coverage
42
+
43
+ # Job 2: Run unit tests with coverage and upload to Codecov
44
+ unit-tests-coverage:
45
+ runs-on: ubuntu-latest
46
+
47
+ steps:
48
+ - name: Check-out repository
49
+ uses: actions/checkout@v6
50
+
51
+ - name: Set up pixi
52
+ uses: ./.github/actions/setup-pixi
53
+
54
+ - name: Run unit tests with coverage
55
+ run: pixi run unit-tests-coverage --cov-report=xml:coverage-unit.xml
56
+
57
+ - name: Upload unit tests coverage to Codecov
58
+ if: ${{ !cancelled() }}
59
+ uses: ./.github/actions/upload-codecov
60
+ with:
61
+ name: unit-tests-job
62
+ flags: unittests
63
+ files: ./coverage-unit.xml
64
+ token: ${{ secrets.CODECOV_TOKEN }}
65
+
66
+ # Job 2: Run integration tests with coverage and upload to Codecov
67
+ integration-tests-coverage:
68
+ runs-on: ubuntu-latest
69
+
70
+ steps:
71
+ - name: Check-out repository
72
+ uses: actions/checkout@v6
73
+
74
+ - name: Set up pixi
75
+ uses: ./.github/actions/setup-pixi
76
+
77
+ - name: Run integration tests with coverage
78
+ run:
79
+ pixi run integration-tests-coverage --cov-report=xml:coverage-integration.xml
80
+
81
+ - name: Upload integration tests coverage to Codecov
82
+ if: ${{ !cancelled() }}
83
+ uses: ./.github/actions/upload-codecov
84
+ with:
85
+ name: integration-tests-job
86
+ flags: integration
87
+ files: ./coverage-integration.xml
88
+ token: ${{ secrets.CODECOV_TOKEN }}
89
+
90
+ # Job 4: Build and publish dashboard (reusable workflow)
91
+ run-reusable-workflows:
92
+ needs: [docstring-coverage, unit-tests-coverage, integration-tests-coverage] # depend on the previous jobs
93
+ uses: ./.github/workflows/dashboard.yml
94
+ secrets: inherit
@@ -0,0 +1,115 @@
1
+ name: Dashboard build and publish
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ workflow_call:
6
+
7
+ permissions:
8
+ contents: read
9
+
10
+ concurrency:
11
+ group: dashboard-publish-${{ github.repository }}
12
+ cancel-in-progress: false
13
+
14
+ # Set the environment variables to be used in all jobs defined in this workflow
15
+ env:
16
+ CI_BRANCH: ${{ github.head_ref || github.ref_name }}
17
+ DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
18
+ DEVELOP_BRANCH: develop
19
+ REPO_OWNER: ${{ github.repository_owner }}
20
+ REPO_NAME: ${{ github.event.repository.name }}
21
+
22
+ jobs:
23
+ dashboard:
24
+ runs-on: ubuntu-latest
25
+
26
+ steps:
27
+ - name: Checkout repository
28
+ uses: actions/checkout@v6
29
+ with:
30
+ fetch-depth: 0
31
+
32
+ - name: Set up pixi
33
+ uses: ./.github/actions/setup-pixi
34
+
35
+ # Install badgery into the active Pixi environment without modifying
36
+ # pixi.toml/pixi.lock. Using `pixi add` here re-solves the whole project
37
+ # and rebuilds the local editable package, which can cause intermittent
38
+ # Linux CI failures (`Text file busy`, os error 26).
39
+ - name: Install badgery
40
+ shell: bash
41
+ run: pixi run python -m pip install git+https://github.com/enhantica/badgery
42
+
43
+ - name: Run docstring coverage and code complexity/maintainability checks
44
+ run: |
45
+ for BRANCH in $DEFAULT_BRANCH $DEVELOP_BRANCH $CI_BRANCH; do
46
+ echo
47
+ echo "πŸ”ΉπŸ”ΈπŸ”ΉπŸ”ΈπŸ”Ή Processing branch $BRANCH πŸ”ΉπŸ”ΈπŸ”ΉπŸ”ΈπŸ”Ή"
48
+ if [ -d "../$BRANCH" ]; then
49
+ echo "Branch $BRANCH already processed, skipping"
50
+ continue
51
+ fi
52
+
53
+ git worktree add ../$BRANCH origin/$BRANCH
54
+ mkdir -p reports/$BRANCH
55
+
56
+ echo "Docstring coverage for branch $BRANCH"
57
+ pixi run interrogate -c pyproject.toml --fail-under=0 ../$BRANCH/src > reports/$BRANCH/coverage-docstring.txt
58
+
59
+ echo "Cyclomatic complexity for branch $BRANCH"
60
+ pixi run radon cc -s -j ../$BRANCH/src > reports/$BRANCH/cyclomatic-complexity.json
61
+
62
+ echo "Maintainability index for branch $BRANCH"
63
+ pixi run radon mi -j ../$BRANCH/src > reports/$BRANCH/maintainability-index.json
64
+
65
+ echo "Raw metrics for branch $BRANCH"
66
+ pixi run radon raw -s -j ../$BRANCH/src > reports/$BRANCH/raw-metrics.json
67
+ done
68
+
69
+ - name: Generate dashboard HTML
70
+ run: >
71
+ pixi run python -m badgery --config .badgery.yaml --repo ${{ github.repository
72
+ }} --branch ${{ env.CI_BRANCH }} --output index.html
73
+
74
+ - name: Prepare publish directory
75
+ run: |
76
+ mkdir -p _dashboard_publish/${{ env.REPO_NAME }}/${{ env.CI_BRANCH }}
77
+ cp index.html _dashboard_publish/${{ env.REPO_NAME }}/${{ env.CI_BRANCH }}
78
+
79
+ # Create GitHub App token for pushing to external dashboard repo.
80
+ # The 'repositories' parameter is required to grant access to repos
81
+ # other than the one where the workflow is running.
82
+ - name: Setup easyscience[bot]
83
+ id: bot
84
+ uses: ./.github/actions/setup-easyscience-bot
85
+ with:
86
+ app-id: ${{ vars.EASYSCIENCE_APP_ID }}
87
+ private-key: ${{ secrets.EASYSCIENCE_APP_KEY }}
88
+ repositories: |
89
+ ${{ github.event.repository.name }}
90
+ dashboard
91
+
92
+ # Push to external dashboard repository with retry logic.
93
+ # Retry is needed to handle transient GitHub API/authentication issues
94
+ # that occasionally cause 403 errors when multiple workflows push concurrently.
95
+ # Uses personal_token (not github_token) as GITHUB_TOKEN cannot access external repos.
96
+ - name:
97
+ Push to ${{ env.REPO_OWNER }}/dashboard/${{ env.REPO_NAME }}/${{ env.CI_BRANCH
98
+ }}
99
+ shell: bash
100
+ env:
101
+ DASHBOARD_COMMIT_MESSAGE: ${{ env.CI_BRANCH }}
102
+ DASHBOARD_GIT_USER_EMAIL:
103
+ ${{ vars.EASYSCIENCE_APP_ID }}+easyscience[bot]@users.noreply.github.com
104
+ DASHBOARD_PUSH_ATTEMPTS: '3'
105
+ DASHBOARD_PUSH_DELAY_SECONDS: '15'
106
+ DASHBOARD_PUBLISH_BRANCH: master
107
+ DASHBOARD_REMOTE_REPOSITORY: ${{ env.REPO_OWNER }}/dashboard
108
+ DASHBOARD_SOURCE_DIR: ./_dashboard_publish
109
+ DASHBOARD_TOKEN: ${{ steps.bot.outputs.token }}
110
+ run: bash ./.github/scripts/publish-dashboard.sh
111
+
112
+ - name: Add dashboard link to summary
113
+ run: |
114
+ URL="https://${{ env.REPO_OWNER }}.github.io/dashboard/${{ env.REPO_NAME }}/${{ env.CI_BRANCH }}"
115
+ echo "Dashboard link: [$URL]($URL)" >> $GITHUB_STEP_SUMMARY