easydiffraction 0.7.0__tar.gz → 0.7.2__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 (230) hide show
  1. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/.github/workflows/build-docs.yml +66 -32
  2. easydiffraction-0.7.2/.github/workflows/create-release-pr.yml +35 -0
  3. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/.github/workflows/draft-release-notes.yml +41 -2
  4. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/.github/workflows/publish-pypi.yml +2 -3
  5. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/.github/workflows/scan-security.yml +2 -3
  6. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/.github/workflows/test-code.yaml +29 -16
  7. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/.github/workflows/test-package-pypi.yaml +12 -8
  8. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/.github/workflows/test-tutorials-colab.yaml +1 -13
  9. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/.github/workflows/test-tutorials.yaml +5 -11
  10. easydiffraction-0.7.2/.github/workflows/trigger-test-code.yaml +30 -0
  11. easydiffraction-0.7.2/.github/workflows/trigger-test-tutorials.yaml +30 -0
  12. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/.github/workflows/verify-pr-labels.yml +1 -1
  13. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/PKG-INFO +1 -1
  14. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/user-guide/analysis-workflow/experiment.md +83 -49
  15. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/pixi/prod/pixi.toml +2 -2
  16. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/pixi/wheel/pixi.toml +2 -2
  17. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/pixi.lock +1357 -1362
  18. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/pixi.toml +29 -36
  19. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/pyproject.toml +14 -9
  20. easydiffraction-0.7.2/pytest.ini +3 -0
  21. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/analysis/analysis.py +10 -12
  22. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/analysis/calculation.py +5 -7
  23. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/analysis/calculators/calculator_base.py +9 -7
  24. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/analysis/calculators/calculator_crysfml.py +3 -4
  25. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/analysis/calculators/calculator_cryspy.py +18 -15
  26. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/analysis/calculators/calculator_factory.py +4 -33
  27. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/analysis/calculators/calculator_pdffit.py +3 -5
  28. easydiffraction-0.7.0/src/easydiffraction/analysis/reliability_factors.py → easydiffraction-0.7.2/src/easydiffraction/analysis/fitting/metrics.py +4 -3
  29. easydiffraction-0.7.0/src/easydiffraction/analysis/minimizers/fitting_progress_tracker.py → easydiffraction-0.7.2/src/easydiffraction/analysis/fitting/progress_tracker.py +1 -1
  30. easydiffraction-0.7.0/src/easydiffraction/analysis/minimizers/minimizer_base.py → easydiffraction-0.7.2/src/easydiffraction/analysis/fitting/results.py +5 -148
  31. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/analysis/minimization.py +9 -6
  32. easydiffraction-0.7.2/src/easydiffraction/analysis/minimizers/minimizer_base.py +147 -0
  33. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/analysis/minimizers/minimizer_dfols.py +1 -1
  34. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/analysis/minimizers/minimizer_factory.py +3 -4
  35. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/analysis/minimizers/minimizer_lmfit.py +1 -1
  36. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/experiments/collections/background.py +32 -8
  37. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/experiments/collections/excluded_regions.py +13 -8
  38. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/experiments/collections/linked_phases.py +7 -1
  39. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/experiments/components/experiment_type.py +62 -0
  40. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/experiments/components/instrument.py +7 -7
  41. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/experiments/components/peak.py +62 -35
  42. easydiffraction-0.7.2/src/easydiffraction/experiments/datastore.py +250 -0
  43. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/experiments/experiment.py +190 -98
  44. easydiffraction-0.7.2/src/easydiffraction/experiments/experiments.py +114 -0
  45. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/plotting/plotters/plotter_ascii.py +3 -4
  46. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/plotting/plotters/plotter_base.py +10 -0
  47. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/plotting/plotters/plotter_plotly.py +2 -3
  48. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/plotting/plotting.py +46 -8
  49. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/project.py +16 -12
  50. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/sample_models/collections/atom_sites.py +9 -0
  51. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/sample_models/components/cell.py +6 -0
  52. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/sample_models/components/space_group.py +2 -0
  53. easydiffraction-0.7.2/src/easydiffraction/utils/__init__.py +3 -0
  54. easydiffraction-0.7.2/src/easydiffraction/utils/decorators.py +45 -0
  55. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/utils/utils.py +2 -3
  56. {easydiffraction-0.7.0/tests/functional_tests → easydiffraction-0.7.2/tests/functional}/fitting/test_pair-distribution-function.py +8 -6
  57. {easydiffraction-0.7.0/tests/functional_tests → easydiffraction-0.7.2/tests/functional}/fitting/test_powder-diffraction_constant-wavelength.py +5 -3
  58. {easydiffraction-0.7.0/tests/functional_tests → easydiffraction-0.7.2/tests/functional}/fitting/test_powder-diffraction_joint-fit.py +15 -4
  59. {easydiffraction-0.7.0/tests/functional_tests → easydiffraction-0.7.2/tests/functional}/fitting/test_powder-diffraction_multiphase.py +5 -1
  60. {easydiffraction-0.7.0/tests/functional_tests → easydiffraction-0.7.2/tests/functional}/fitting/test_powder-diffraction_time-of-flight.py +10 -2
  61. {easydiffraction-0.7.0/tests/unit_tests → easydiffraction-0.7.2/tests/unit}/analysis/calculators/test_calculator_base.py +7 -6
  62. {easydiffraction-0.7.0/tests/unit_tests → easydiffraction-0.7.2/tests/unit}/analysis/calculators/test_calculator_cryspy.py +3 -3
  63. {easydiffraction-0.7.0/tests/unit_tests → easydiffraction-0.7.2/tests/unit}/analysis/calculators/test_calculator_factory.py +0 -14
  64. {easydiffraction-0.7.0/tests/unit_tests → easydiffraction-0.7.2/tests/unit}/analysis/minimizers/test_fitting_progress_tracker.py +3 -3
  65. {easydiffraction-0.7.0/tests/unit_tests → easydiffraction-0.7.2/tests/unit}/analysis/minimizers/test_minimizer_base.py +2 -2
  66. {easydiffraction-0.7.0/tests/unit_tests → easydiffraction-0.7.2/tests/unit}/analysis/test_minimization.py +67 -31
  67. {easydiffraction-0.7.0/tests/unit_tests → easydiffraction-0.7.2/tests/unit}/analysis/test_reliability_factors.py +14 -12
  68. easydiffraction-0.7.2/tests/unit/experiments/collections/test_datastore.py +181 -0
  69. easydiffraction-0.7.2/tests/unit/experiments/collections/test_linked_phases.py +46 -0
  70. {easydiffraction-0.7.0/tests/unit_tests → easydiffraction-0.7.2/tests/unit}/experiments/components/test_experiment_type.py +17 -4
  71. {easydiffraction-0.7.0/tests/unit_tests → easydiffraction-0.7.2/tests/unit}/experiments/test_experiment.py +52 -21
  72. {easydiffraction-0.7.0/tests/unit_tests → easydiffraction-0.7.2/tests/unit}/experiments/test_experiments.py +4 -14
  73. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/advanced_joint-fit_pd-neut-xray-cwl_PbSO4.py +10 -2
  74. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/basic_single-fit_pd-neut-cwl_LBCO-HRPT.py +2 -2
  75. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/cryst-struct_pd-neut-cwl_CoSiO4-D20.py +1 -1
  76. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/cryst-struct_pd-neut-tof_Si-SEPD.py +1 -1
  77. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/cryst-struct_pd-neut-tof_multidata_NCAF-WISH.py +4 -4
  78. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/cryst-struct_pd-neut-tof_multiphase-LBCO-Si_McStas.py +2 -2
  79. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/dmsc-summer-school-2025_analysis-powder-diffraction.py +4 -4
  80. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/pdf_pd-neut-cwl_Ni.py +2 -2
  81. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/pdf_pd-neut-tof_Si-NOMAD.py +2 -2
  82. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/pdf_pd-xray_NaCl.py +2 -2
  83. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/quick_single-fit_pd-neut-cwl_LBCO-HRPT.py +2 -2
  84. easydiffraction-0.7.0/.github/workflows/test-tutorials-nightly.yaml +0 -10
  85. easydiffraction-0.7.0/.github/workflows/validate-pixi.yaml +0 -76
  86. easydiffraction-0.7.0/src/easydiffraction/core/constants.py +0 -30
  87. easydiffraction-0.7.0/src/easydiffraction/experiments/collections/datastore.py +0 -126
  88. easydiffraction-0.7.0/src/easydiffraction/experiments/experiments.py +0 -124
  89. easydiffraction-0.7.0/src/easydiffraction/utils/decorators.py +0 -26
  90. easydiffraction-0.7.0/tests/unit_tests/experiments/collections/test_datastore.py +0 -151
  91. easydiffraction-0.7.0/tests/unit_tests/experiments/collections/test_linked_phases.py +0 -151
  92. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/.github/workflows/delete-old-runs.yml +0 -0
  93. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/.gitignore +0 -0
  94. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/.prettierignore +0 -0
  95. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/CONTRIBUTING.md +0 -0
  96. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/DEVELOPMENT.md +0 -0
  97. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/LICENSE +0 -0
  98. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/README.md +0 -0
  99. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/deps/pycrysfml-0.1.6-py312-none-macosx_14_0_arm64.whl +0 -0
  100. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/deps/pycrysfml-0.1.6-py312-none-win_amd64.whl +0 -0
  101. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/api-reference/analysis.md +0 -0
  102. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/api-reference/core.md +0 -0
  103. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/api-reference/crystallography.md +0 -0
  104. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/api-reference/experiments.md +0 -0
  105. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/api-reference/index.md +0 -0
  106. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/api-reference/plotting.md +0 -0
  107. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/api-reference/project.md +0 -0
  108. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/api-reference/sample_models.md +0 -0
  109. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/api-reference/summary.md +0 -0
  110. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/api-reference/utils.md +0 -0
  111. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/assets/images/user-guide/data-acquisition_2d-raw-data.jpg +0 -0
  112. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/assets/images/user-guide/data-acquisition_instrument.png +0 -0
  113. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/assets/images/user-guide/data-analysis_model.png +0 -0
  114. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/assets/images/user-guide/data-analysis_refinement.png +0 -0
  115. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/assets/images/user-guide/data-reduction_1d-pattern.png +0 -0
  116. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/index.md +0 -0
  117. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/installation-and-setup/index.md +0 -0
  118. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/introduction/index.md +0 -0
  119. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/mkdocs.yml +0 -0
  120. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/tutorials/index.md +0 -0
  121. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/user-guide/analysis-workflow/analysis.md +0 -0
  122. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/user-guide/analysis-workflow/index.md +0 -0
  123. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/user-guide/analysis-workflow/model.md +0 -0
  124. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/user-guide/analysis-workflow/project.md +0 -0
  125. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/user-guide/analysis-workflow/summary.md +0 -0
  126. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/user-guide/concept.md +0 -0
  127. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/user-guide/data-format.md +0 -0
  128. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/user-guide/first-steps.md +0 -0
  129. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/user-guide/glossary.md +0 -0
  130. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/user-guide/index.md +0 -0
  131. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/user-guide/parameters/_diffrn_radiation.md +0 -0
  132. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/user-guide/parameters/_diffrn_radiation_wavelength.md +0 -0
  133. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/user-guide/parameters/_exptl_crystal.md +0 -0
  134. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/user-guide/parameters/_extinction.md +0 -0
  135. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/user-guide/parameters/_pd_calib.md +0 -0
  136. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/user-guide/parameters/atom_site.md +0 -0
  137. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/user-guide/parameters/background.md +0 -0
  138. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/user-guide/parameters/cell.md +0 -0
  139. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/user-guide/parameters/expt_type.md +0 -0
  140. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/user-guide/parameters/instrument.md +0 -0
  141. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/user-guide/parameters/linked_phases.md +0 -0
  142. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/user-guide/parameters/pd_meas.md +0 -0
  143. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/user-guide/parameters/peak.md +0 -0
  144. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/user-guide/parameters/space_group.md +0 -0
  145. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/docs/user-guide/parameters.md +0 -0
  146. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/prettierrc.toml +0 -0
  147. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/pycrysfml.md +0 -0
  148. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/__init__.py +0 -0
  149. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/__main__.py +0 -0
  150. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/analysis/__init__.py +0 -0
  151. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/analysis/calculators/__init__.py +0 -0
  152. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/analysis/collections/__init__.py +0 -0
  153. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/analysis/collections/aliases.py +0 -0
  154. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/analysis/collections/constraints.py +0 -0
  155. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/analysis/collections/joint_fit_experiments.py +0 -0
  156. {easydiffraction-0.7.0/src/easydiffraction/analysis/minimizers → easydiffraction-0.7.2/src/easydiffraction/analysis/fitting}/__init__.py +0 -0
  157. {easydiffraction-0.7.0/src/easydiffraction/core → easydiffraction-0.7.2/src/easydiffraction/analysis/minimizers}/__init__.py +0 -0
  158. {easydiffraction-0.7.0/src/easydiffraction/crystallography → easydiffraction-0.7.2/src/easydiffraction/core}/__init__.py +0 -0
  159. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/core/objects.py +0 -0
  160. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/core/singletons.py +0 -0
  161. {easydiffraction-0.7.0/src/easydiffraction/experiments → easydiffraction-0.7.2/src/easydiffraction/crystallography}/__init__.py +0 -0
  162. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/crystallography/crystallography.py +0 -0
  163. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/crystallography/space_group_lookup_table.py +0 -0
  164. {easydiffraction-0.7.0/src/easydiffraction/experiments/collections → easydiffraction-0.7.2/src/easydiffraction/experiments}/__init__.py +0 -0
  165. {easydiffraction-0.7.0/src/easydiffraction/experiments/components → easydiffraction-0.7.2/src/easydiffraction/experiments/collections}/__init__.py +0 -0
  166. {easydiffraction-0.7.0/src/easydiffraction/plotting → easydiffraction-0.7.2/src/easydiffraction/experiments/components}/__init__.py +0 -0
  167. {easydiffraction-0.7.0/src/easydiffraction/plotting/plotters → easydiffraction-0.7.2/src/easydiffraction/plotting}/__init__.py +0 -0
  168. {easydiffraction-0.7.0/src/easydiffraction/sample_models → easydiffraction-0.7.2/src/easydiffraction/plotting/plotters}/__init__.py +0 -0
  169. {easydiffraction-0.7.0/src/easydiffraction/sample_models/collections → easydiffraction-0.7.2/src/easydiffraction/sample_models}/__init__.py +0 -0
  170. {easydiffraction-0.7.0/src/easydiffraction/sample_models/components → easydiffraction-0.7.2/src/easydiffraction/sample_models/collections}/__init__.py +0 -0
  171. {easydiffraction-0.7.0/src/easydiffraction/utils → easydiffraction-0.7.2/src/easydiffraction/sample_models/components}/__init__.py +0 -0
  172. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/sample_models/sample_model.py +0 -0
  173. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/sample_models/sample_models.py +0 -0
  174. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/summary.py +0 -0
  175. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/src/easydiffraction/utils/formatting.py +0 -0
  176. {easydiffraction-0.7.0/tests/unit_tests → easydiffraction-0.7.2/tests/unit}/analysis/collections/test_joint_fit_experiment.py +0 -0
  177. {easydiffraction-0.7.0/tests/unit_tests → easydiffraction-0.7.2/tests/unit}/analysis/minimizers/test_minimizer_dfols.py +0 -0
  178. {easydiffraction-0.7.0/tests/unit_tests → easydiffraction-0.7.2/tests/unit}/analysis/minimizers/test_minimizer_factory.py +0 -0
  179. {easydiffraction-0.7.0/tests/unit_tests → easydiffraction-0.7.2/tests/unit}/analysis/minimizers/test_minimizer_lmfit.py +0 -0
  180. {easydiffraction-0.7.0/tests/unit_tests → easydiffraction-0.7.2/tests/unit}/analysis/test_analysis.py +0 -0
  181. {easydiffraction-0.7.0/tests/unit_tests → easydiffraction-0.7.2/tests/unit}/core/test_objects.py +0 -0
  182. {easydiffraction-0.7.0/tests/unit_tests → easydiffraction-0.7.2/tests/unit}/core/test_singletons.py +0 -0
  183. {easydiffraction-0.7.0/tests/unit_tests → easydiffraction-0.7.2/tests/unit}/experiments/collections/test_background.py +0 -0
  184. {easydiffraction-0.7.0/tests/unit_tests → easydiffraction-0.7.2/tests/unit}/experiments/components/test_instrument.py +0 -0
  185. {easydiffraction-0.7.0/tests/unit_tests → easydiffraction-0.7.2/tests/unit}/experiments/components/test_peak.py +0 -0
  186. {easydiffraction-0.7.0/tests/unit_tests → easydiffraction-0.7.2/tests/unit}/sample_models/collections/test_atom_sites.py +0 -0
  187. {easydiffraction-0.7.0/tests/unit_tests → easydiffraction-0.7.2/tests/unit}/sample_models/components/test_cell.py +0 -0
  188. {easydiffraction-0.7.0/tests/unit_tests → easydiffraction-0.7.2/tests/unit}/sample_models/components/test_space_group.py +0 -0
  189. {easydiffraction-0.7.0/tests/unit_tests → easydiffraction-0.7.2/tests/unit}/sample_models/test_sample_models.py +0 -0
  190. {easydiffraction-0.7.0/tests/unit_tests → easydiffraction-0.7.2/tests/unit}/test_project.py +0 -0
  191. {easydiffraction-0.7.0/tests/unit_tests → easydiffraction-0.7.2/tests/unit}/test_symmetry_lookup_table.py +0 -0
  192. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tools/add_assets_to_docs.sh +0 -0
  193. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tools/cleanup_docs.sh +0 -0
  194. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tools/create_mkdocs_yml.py +0 -0
  195. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tools/test_scripts.py +0 -0
  196. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tools/tweak_notebooks.py +0 -0
  197. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tools/update_spdx.py +0 -0
  198. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/cryst-struct_pd-neut-cwl_HS-HRPT.py +0 -0
  199. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/data/NOM_9999_Si_640g_PAC_50_ff_ftfrgr_up-to-50.gr +0 -0
  200. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/data/NaCl.gr +0 -0
  201. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/data/co2sio4_d20.xye +0 -0
  202. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/data/d1a_pbso4.dat +0 -0
  203. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/data/d1a_pbso4_first-half.dat +0 -0
  204. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/data/d1a_pbso4_second-half.dat +0 -0
  205. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/data/hrpt_hs.xye +0 -0
  206. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/data/hrpt_lbco.xye +0 -0
  207. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/data/lab_pbso4.dat +0 -0
  208. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/data/mcstas_lbco-si.xye +0 -0
  209. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/data/mcstas_lbco-si.xys +0 -0
  210. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/data/mcstas_lbco-si_up-to-108k.xys +0 -0
  211. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/data/ni-q27r100-neutron_from-2.gr +0 -0
  212. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/data/powder_reduced_Si_2large_bank.xye +0 -0
  213. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/data/reduced_LBCO.xye +0 -0
  214. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/data/reduced_Si.xye +0 -0
  215. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/data/sepd_si.xye +0 -0
  216. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/data/wish_ncaf.xye +0 -0
  217. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/data/wish_ncaf_2_9.xye +0 -0
  218. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/data/wish_ncaf_4_7.xye +0 -0
  219. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/data/wish_ncaf_4_7.xys +0 -0
  220. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/data/wish_ncaf_5_6.xye +0 -0
  221. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/data/wish_ncaf_5_6.xys +0 -0
  222. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials/data/wish_ybcfo_5_6.xye +0 -0
  223. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials-drafts/cryst-struct_pd-neut-tof_multiphase-BSFTO-HRPT.py +0 -0
  224. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials-drafts/data/DREAM_mantle_bc240_nist_cif.xye +0 -0
  225. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials-drafts/data/DREAM_mantle_bc240_nist_cif_2.xye +0 -0
  226. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials-drafts/data/DREAM_mantle_bc240_nist_nc.xye +0 -0
  227. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials-drafts/data/DREAM_mantle_bc240_nist_nc_2.xye +0 -0
  228. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials-drafts/data/Si_mp-149_symmetrized_mcstas.cif +0 -0
  229. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials-drafts/hrpt_n_Bi0p88Sm0p12Fe0p94Ti0p06O3_DW_V_9x8x52_1p49_HI.xye +0 -0
  230. {easydiffraction-0.7.0 → easydiffraction-0.7.2}/tutorials-drafts/test_single-fit_pd-neut-tof_Si-DREAM_nc.py +0 -0
@@ -1,13 +1,32 @@
1
+ # This workflow builds and deploys documentation for the project.
2
+ #
3
+ # Steps overview:
4
+ # Job 1: build-docs
5
+ # - Builds documentation (including running Jupyter notebooks to generate output cells).
6
+ # - Uploads the built site as a Pages artifact.
7
+ # Job 2: deploy-dev
8
+ # - Deploys the built site to GitHub Pages for development (pushes to develop/master).
9
+ # Job 3: deploy-prod
10
+ # - Deploys the built site to gh_pages branch for production (release tags starting with v*).
11
+ # - This triggers deployment to a custom domain via webhook.
12
+ #
13
+ # The action summary page will contain links to the built artifact for downloading
14
+ # and inspecting, as well as links to both the development and production versions of
15
+ # the deployed documentation site.
16
+
1
17
  name: Build and deploy docs
2
18
 
3
19
  on:
20
+ # Trigger the workflow on pull request
21
+ pull_request:
22
+ # Selected branches
23
+ branches: [master, develop]
4
24
  # Trigger the workflow on push
5
25
  push:
6
26
  # Selected branches
7
- branches: [master, develop, docs, patch]
27
+ branches: [master, develop]
8
28
  # Runs on creating a new tag starting with 'v', e.g. 'v1.0.3'
9
- tags:
10
- - 'v*'
29
+ tags: ['v*']
11
30
  # Allows you to run this workflow manually from the Actions tab
12
31
  workflow_dispatch:
13
32
 
@@ -41,7 +60,7 @@ jobs:
41
60
 
42
61
  steps:
43
62
  - name: Check-out repository
44
- uses: actions/checkout@v4
63
+ uses: actions/checkout@v5
45
64
  with:
46
65
  fetch-depth: 0 # full history + tags. needed to get the latest release version
47
66
 
@@ -92,6 +111,12 @@ jobs:
92
111
  - name: Convert tutorial scripts to notebooks
93
112
  run: pixi run notebook-prepare
94
113
 
114
+ # The following step is needed to avoid the following message during the build:
115
+ # "Matplotlib is building the font cache; this may take a moment"
116
+ - name: Pre-build site step
117
+ run: pixi run python -c "import easydiffraction"
118
+
119
+ # Run the notebooks to generate the output cells using multiple cores
95
120
  - name: Run notebooks
96
121
  run: pixi run notebook-exec
97
122
 
@@ -121,26 +146,15 @@ jobs:
121
146
  # Upload the static files from the site/ directory to be used in the next job
122
147
  # This artifact is named github-pages and is a single gzip archive containing a single tar file
123
148
  # The artifact is then used in the next job by actions/deploy-pages to deploy the static files to GitHub Pages
124
- # Unfortunately, the artifact is not available for download, so extra steps below are needed to do similar things
125
- - name: Upload built site as artifact for DEV deployment (all branches)
149
+ # It can also be downloaded using the actions/download-artifact, as the current upload-pages-artifact
150
+ # is a wrapper which triggers the actions/upload-artifact.
151
+ - name: Upload built site as artifact
126
152
  uses: actions/upload-pages-artifact@v3
127
153
  with:
128
154
  path: site/
129
155
 
130
- # Upload the static files from the site/ directory to be used in the next job
131
- # This artifact is only uploaded on tagged releases (tags starting with 'v', e.g., v1.0.3)
132
- # and is used to push content to gh_pages for custom domain deployment.
133
- - name: Upload built site as artifact for PROD deployment (tagged release)
134
- if: startsWith(github.ref, 'refs/tags/v')
135
- uses: actions/upload-artifact@v4
136
- with:
137
- name: artifact # name of the artifact (without the extension zip)
138
- path: site/
139
- if-no-files-found: 'error'
140
- compression-level: 0
141
-
142
- # Job 2: Deploy the static files
143
- deploy-docs:
156
+ # Job 2: Deploy the built static files to GitHub Pages (DEV deployment)
157
+ deploy-dev:
144
158
  needs: build-docs # previous job 'build-docs' need to be finished first
145
159
 
146
160
  # Grant GITHUB_TOKEN the permissions required to make a Pages deployment
@@ -152,38 +166,59 @@ jobs:
152
166
  # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
153
167
  # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
154
168
  concurrency:
155
- group: 'pages'
169
+ group: 'pages-dev'
156
170
  cancel-in-progress: false
157
171
 
158
172
  # Deploy to the github-pages environment
159
173
  environment:
160
- name: github-pages # Artifact name
174
+ name: github-pages # Environment name
161
175
  url: ${{ steps.deployment.outputs.page_url }}
162
176
 
163
177
  runs-on: ubuntu-latest
164
178
 
179
+ # Triggered on push to develop or master branch only
180
+ if: ${{ github.ref_name == 'develop' || github.ref_name == 'master' }}
181
+
165
182
  steps:
166
183
  # Deploy the static files created in the previous job to GitHub Pages
167
184
  # To allow the deployment of the static files to GitHub Pages, no
168
185
  # restrictions on the branch name need to be set for desired branches on
169
186
  # https://github.com/easyscience/diffraction-lib/settings/environments
170
187
  # Deployed pages are available at https://easyscience.github.io/diffraction-lib
171
- - name: DEV deployment (all branches)
188
+ - name: DEV deployment
172
189
  uses: actions/deploy-pages@v4
173
190
 
174
- - name: Show DEV deployment url (all branches)
191
+ - name: Add DEV deployment url to summary
175
192
  run:
176
193
  echo "🔗 DEV deployment url [${{ env.DEV_DEPLOYMENT_URL }}](${{
177
194
  env.DEV_DEPLOYMENT_URL }})" >> $GITHUB_STEP_SUMMARY
178
195
 
196
+ # Job 3: Deploy the built static files to GitHub Pages (PROD deployment)
197
+ deploy-prod:
198
+ needs: deploy-dev # previous job 'deploy-dev' needs to be finished first
199
+
200
+ # Grant GITHUB_TOKEN the permissions required to make a Pages deployment
201
+ permissions:
202
+ contents: read
203
+
204
+ # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
205
+ # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
206
+ concurrency:
207
+ group: 'pages-prod'
208
+ cancel-in-progress: false
209
+
210
+ runs-on: ubuntu-latest
211
+
212
+ # Triggered on tagged releases only (tags starting with 'v', e.g., v1.0.3)
213
+ if: startsWith(github.ref, 'refs/tags/v')
214
+
215
+ steps:
179
216
  # Download built site as artifact from a previous job for gh_pages (tagged release)
180
- # This artifact is only downloaded on tagged releases (tags starting with 'v', e.g., v1.0.3)
181
- # and is used to push content to gh_pages for custom domain deployment.
182
- - name: Download built site from previous job (tagged release)
183
- if: startsWith(github.ref, 'refs/tags/v')
217
+ # This artifact is used to push its content to gh_pages branch for custom domain deployment.
218
+ - name: Download built site from previous job
184
219
  uses: actions/download-artifact@v4
185
220
  with: # name or path are taken from the upload step of the previous job
186
- name: artifact
221
+ name: github-pages
187
222
  path: site/ # directory to extract downloaded zipped artifacts
188
223
 
189
224
  # Push the site files created in the previous job to the gh_pages branch
@@ -196,8 +231,7 @@ jobs:
196
231
  # Then the gh_pages branch is used to deploy the site to the custom domain.
197
232
  # Deploying is done with a webhook added via:
198
233
  # https://github.com/easyscience/diffraction-lib/settings/hooks
199
- - name: PROD deployment to gh_pages for custom domain (tagged release)
200
- if: startsWith(github.ref, 'refs/tags/v')
234
+ - name: PROD deployment to gh_pages for custom domain
201
235
  uses: s0/git-publish-subdir-action@develop
202
236
  env:
203
237
  GITHUB_TOKEN: ${{ secrets.GH_API_PERSONAL_ACCSESS_TOKEN }}
@@ -205,7 +239,7 @@ jobs:
205
239
  BRANCH: gh_pages
206
240
  FOLDER: site
207
241
 
208
- - name: Show PROD deployment url (tagged release)
242
+ - name: Show PROD deployment url
209
243
  if: startsWith(github.ref, 'refs/tags/v')
210
244
  run:
211
245
  echo "🔗 PROD deployment url [${{ env.PROD_DEPLOYMENT_URL }}](${{
@@ -0,0 +1,35 @@
1
+ # This workflow creates an automated release PR from `develop` into `master`.
2
+ #
3
+ # Usage:
4
+ # - Triggered manually via workflow_dispatch.
5
+ # - Creates a PR titled "Release: merge develop into master".
6
+ # - Adds the label "[maintainer] release" so it is excluded from changelogs.
7
+ # - The PR body makes clear that this is automation only (no review needed).
8
+
9
+ name: Create release PR
10
+
11
+ on:
12
+ workflow_dispatch: # manual trigger only
13
+
14
+ jobs:
15
+ create-pr:
16
+ runs-on: ubuntu-latest
17
+ steps:
18
+ - uses: actions/checkout@v5
19
+
20
+ - name: Create PR from develop to master
21
+ uses: peter-evans/create-pull-request@v6
22
+ with:
23
+ token: ${{ secrets.GITHUB_TOKEN }}
24
+ branch: develop
25
+ base: master
26
+ title: 'Release: merge develop into master'
27
+ body: |
28
+ This pull request is created automatically to trigger the release
29
+ pipeline. It merges the accumulated changes from `develop` into
30
+ `master`.
31
+
32
+ ⚠️ Note: This PR is labeled **[maintainer] release** and is excluded
33
+ from release notes and version bump logic.
34
+ labels: '[maintainer] release'
35
+ draft: false
@@ -7,6 +7,8 @@ on:
7
7
  # Runs on pushes targeting the default branch (updates the real draft release)
8
8
  push:
9
9
  branches: [master]
10
+ # Allows you to run this workflow manually from the Actions tab
11
+ workflow_dispatch:
10
12
 
11
13
  jobs:
12
14
  draft-release-notes:
@@ -17,9 +19,34 @@ jobs:
17
19
  runs-on: ubuntu-latest
18
20
 
19
21
  steps:
20
- - name: Drafts the next release notes
21
- uses: enhantica/drafterino@v1
22
+ - name: Checkout repository
23
+ uses: actions/checkout@v5
24
+ with:
25
+ fetch-depth: 0 # full history with tags to get the version number by drafterino
26
+
27
+ - name: Set up pixi
28
+ uses: prefix-dev/setup-pixi@v0.9.0
29
+ with:
30
+ environments: >-
31
+ default
32
+ activate-environment: default
33
+ run-install: true
34
+ frozen: true
35
+ cache: false
36
+ post-cleanup: false
37
+
38
+ - name: Convert tutorial scripts to notebooks
39
+ run: pixi run notebook-prepare
40
+
41
+ - name: Clean up unnecessary script files
42
+ run: rm -rf tutorials/*.py
22
43
 
44
+ - name: Zip the tutorials directory
45
+ run: zip -9 -r tutorials.zip tutorials
46
+
47
+ - name: Drafts the next release notes
48
+ id: draft
49
+ uses: enhantica/drafterino@v2
23
50
  with:
24
51
  config: |
25
52
  title: 'easydiffraction $COMPUTED_VERSION'
@@ -43,3 +70,15 @@ jobs:
43
70
 
44
71
  env:
45
72
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
73
+
74
+ - name: Create GitHub draft release
75
+ uses: softprops/action-gh-release@v2
76
+ with:
77
+ draft: true
78
+ tag_name: ${{ steps.draft.outputs.tag_name }}
79
+ name: ${{ steps.draft.outputs.release_name }}
80
+ body: ${{ steps.draft.outputs.release_notes }}
81
+ files: |
82
+ tutorials.zip
83
+ env:
84
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -6,8 +6,7 @@ name: Publish to PyPI
6
6
  on:
7
7
  # Runs on creating a new tag starting with 'v', e.g. 'v1.0.3'
8
8
  push:
9
- tags:
10
- - 'v*'
9
+ tags: ['v*']
11
10
  # Allows you to run this workflow manually from the Actions tab
12
11
  workflow_dispatch:
13
12
 
@@ -17,7 +16,7 @@ jobs:
17
16
 
18
17
  steps:
19
18
  - name: Check-out repository
20
- uses: actions/checkout@v4
19
+ uses: actions/checkout@v5
21
20
  with:
22
21
  fetch-depth: '0' # full history with tags to get the version number by versioningit
23
22
 
@@ -7,8 +7,7 @@ name: Scan security (static analysis)
7
7
  on:
8
8
  # Trigger the workflow on pull request
9
9
  pull_request:
10
- branches:
11
- - '**'
10
+ branches: ['**']
12
11
  # Allows you to run this workflow manually from the Actions tab
13
12
  workflow_dispatch:
14
13
 
@@ -20,7 +19,7 @@ jobs:
20
19
 
21
20
  steps:
22
21
  - name: Checkout repository
23
- uses: actions/checkout@v4
22
+ uses: actions/checkout@v5
24
23
  with:
25
24
  # We must fetch at least the immediate parents so that if this is
26
25
  # a pull request then we can checkout the head.
@@ -6,7 +6,7 @@
6
6
  # - Check code linting
7
7
  # - Check code formatting
8
8
  # - Check formatting of Markdown, YAML, TOML, etc. files
9
- # 2. run-tests:
9
+ # 2. test-source:
10
10
  # - Test the code base against the latest code in the repository
11
11
  # - Create the Python package
12
12
  # - Upload the Python package for the next job
@@ -21,16 +21,13 @@ on:
21
21
  # Trigger the workflow on push
22
22
  push:
23
23
  # Every branch
24
- branches:
25
- - '**'
24
+ branches: ['**']
26
25
  # But do not run this workflow on creating a new tag starting with
27
26
  # 'v', e.g. 'v1.0.3' (see publish-pypi.yml)
28
- tags-ignore:
29
- - 'v*'
27
+ tags-ignore: ['v*']
30
28
  # Trigger the workflow on pull request
31
29
  pull_request:
32
- branches:
33
- - '**'
30
+ branches: ['**']
34
31
  # Allows you to run this workflow manually from the Actions tab
35
32
  workflow_dispatch:
36
33
 
@@ -57,9 +54,23 @@ jobs:
57
54
 
58
55
  runs-on: ${{ matrix.os }}
59
56
 
57
+ outputs:
58
+ pytest-marks: ${{ steps.set-mark.outputs.pytest_marks }}
59
+
60
60
  steps:
61
+ # Determine if functional tests should be run fully or only the fast ones
62
+ # (to save time on branches other than master and develop)
63
+ - name: Set mark for functional tests
64
+ id: set-mark
65
+ run: |
66
+ if [[ "${{ env.CI_BRANCH }}" == "master" || "${{ env.CI_BRANCH }}" == "develop" ]]; then
67
+ echo "pytest_marks=" >> $GITHUB_OUTPUT
68
+ else
69
+ echo "pytest_marks=-m 'fast'" >> $GITHUB_OUTPUT
70
+ fi
71
+
61
72
  - name: Checkout repository
62
- uses: actions/checkout@v4
73
+ uses: actions/checkout@v5
63
74
 
64
75
  - name: Set up pixi (incl. environments and dependencies)
65
76
  uses: prefix-dev/setup-pixi@v0.9.0
@@ -136,7 +147,7 @@ jobs:
136
147
 
137
148
  # Job 2: Test code
138
149
  # TODO: Add coverage reporting with upload to Codecov?
139
- run-tests:
150
+ test-source:
140
151
  needs: code-quality # previous job needs to be finished first
141
152
 
142
153
  strategy:
@@ -151,7 +162,7 @@ jobs:
151
162
 
152
163
  steps:
153
164
  - name: Checkout repository
154
- uses: actions/checkout@v4
165
+ uses: actions/checkout@v5
155
166
  with:
156
167
  fetch-depth: '0' # full history with tags to get the version number by versioningit
157
168
 
@@ -172,12 +183,13 @@ jobs:
172
183
  pixi run -e $env unit-tests
173
184
  done
174
185
 
175
- - name: Run functional tests
186
+ - name:
187
+ Run functional tests ${{ needs.code-quality.outputs.pytest-marks }}
176
188
  shell: bash
177
189
  run: |
178
190
  for env in ${{ env.PIXI_ENVS }}; do
179
191
  echo "🔹🔸🔹🔸🔹 Current env: $env 🔹🔸🔹🔸🔹"
180
- pixi run -e $env func-tests
192
+ pixi run -e $env func-tests "${{ needs.code-quality.outputs.pytest-marks }}"
181
193
  done
182
194
 
183
195
  # Delete all local tags when not on a tagged commit to force versioningit
@@ -215,7 +227,7 @@ jobs:
215
227
 
216
228
  # Job 3: Test the package
217
229
  test-package:
218
- needs: run-tests # the previous job needs to be finished first
230
+ needs: [code-quality, test-source] # depend on both previous jobs
219
231
 
220
232
  strategy:
221
233
  fail-fast: false
@@ -260,7 +272,7 @@ jobs:
260
272
  pixi run -e $env easydiffraction version
261
273
  done
262
274
 
263
- - name: Run unit tests (using built package from previous job)
275
+ - name: Run unit tests
264
276
  shell: bash
265
277
  run: |
266
278
  for env in ${{ env.PIXI_ENVS }}; do
@@ -268,10 +280,11 @@ jobs:
268
280
  pixi run -e $env unit-tests
269
281
  done
270
282
 
271
- - name: Run functional tests (using built package from previous job)
283
+ - name:
284
+ Run functional tests ${{ needs.code-quality.outputs.pytest-marks }}
272
285
  shell: bash
273
286
  run: |
274
287
  for env in ${{ env.PIXI_ENVS }}; do
275
288
  echo "🔹🔸🔹🔸🔹 Current env: $env 🔹🔸🔹🔸🔹"
276
- pixi run -e $env func-tests
289
+ pixi run -e $env func-tests "${{ needs.code-quality.outputs.pytest-marks }}"
277
290
  done
@@ -1,4 +1,4 @@
1
- name: Test unpinned package from PyPI
1
+ name: Test unpinned PyPI package
2
2
 
3
3
  on:
4
4
  # Run daily, at 00:00.
@@ -35,10 +35,12 @@ jobs:
35
35
  curl -LO https://raw.githubusercontent.com/easyscience/diffraction-lib/master/pixi/prod/pixi.toml
36
36
 
37
37
  - name: Download the tests from the master branch
38
+ shell: bash
38
39
  run: |
39
40
  curl -LO https://github.com/easyscience/diffraction-lib/archive/refs/heads/master.zip
40
- unzip master.zip "diffraction-lib-master/tests/*" -d .
41
- mv diffraction-lib-master/tests ./tests
41
+ unzip master.zip -d .
42
+ mkdir -p tests
43
+ cp -r diffraction-lib-master/tests/* tests/
42
44
  rm -rf master.zip diffraction-lib-master
43
45
 
44
46
  - name: Create the environment and install dependencies
@@ -50,11 +52,13 @@ jobs:
50
52
  - name: Run functional tests to verify the installation
51
53
  run: pixi run func-tests
52
54
 
53
- - name: List the available EasyDiffraction tutorials
54
- run: pixi run tutorials-list
55
-
56
- - name: Fetch the EasyDiffraction tutorials
57
- run: pixi run tutorials-fetch
55
+ # Github token to avoid hitting the unauthenticated API rate limit
56
+ - name: List and fetch the EasyDiffraction tutorials
57
+ env:
58
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
59
+ run: |
60
+ pixi run tutorials-list
61
+ pixi run tutorials-fetch
58
62
 
59
63
  - name: Test tutorials as notebooks
60
64
  run: pixi run notebook-tests
@@ -1,18 +1,6 @@
1
1
  name: Test tutorials on Colab
2
2
 
3
3
  on:
4
- # Trigger the workflow on push
5
- #push:
6
- # # Every branch
7
- # branches:
8
- # - '**'
9
- # # But do not run this workflow on creating a new tag starting with 'v', e.g. 'v1.0.3' (see publish-pypi.yml)
10
- # tags-ignore:
11
- # - 'v*'
12
- # Trigger the workflow on pull request
13
- #pull_request:
14
- # branches:
15
- # - '**'
16
4
  # Allows you to run this workflow manually from the Actions tab
17
5
  workflow_dispatch:
18
6
 
@@ -37,7 +25,7 @@ jobs:
37
25
 
38
26
  steps:
39
27
  - name: Checkout repository
40
- uses: actions/checkout@v4
28
+ uses: actions/checkout@v5
41
29
 
42
30
  - name: Set up Python ${{ matrix.python-version }}
43
31
  uses: actions/setup-python@v5
@@ -3,17 +3,11 @@ name: Test tutorials
3
3
  on:
4
4
  # Trigger the workflow on push
5
5
  push:
6
- # Every branch
7
- branches:
8
- - '**'
9
- # But do not run this workflow on creating a new tag starting with
10
- # 'v', e.g. 'v1.0.3' (see publish-pypi.yml)
11
- tags-ignore:
12
- - 'v*'
6
+ # Selected branches
7
+ branches: [master, develop]
13
8
  # Trigger the workflow on pull request
14
9
  pull_request:
15
- branches:
16
- - '**'
10
+ branches: ['**']
17
11
  # Trigger the workflow on workflow_call (to be called from other workflows)
18
12
  # Needed, as standard schedule triggers the master branch only, but we want
19
13
  # to run this workflow on develop branch.
@@ -39,7 +33,7 @@ jobs:
39
33
 
40
34
  steps:
41
35
  - name: Checkout repository
42
- uses: actions/checkout@v4
36
+ uses: actions/checkout@v5
43
37
 
44
38
  - name: Set up pixi
45
39
  uses: prefix-dev/setup-pixi@v0.9.0
@@ -82,7 +76,7 @@ jobs:
82
76
 
83
77
  steps:
84
78
  - name: Checkout repository
85
- uses: actions/checkout@v4
79
+ uses: actions/checkout@v5
86
80
 
87
81
  - name: Set up pixi
88
82
  uses: prefix-dev/setup-pixi@v0.9.0
@@ -0,0 +1,30 @@
1
+ name: Trigger scheduled test code
2
+
3
+ on:
4
+ # Run daily, at 00:00.
5
+ schedule:
6
+ - cron: '0 0 * * *'
7
+ # Allows you to run this workflow manually from the Actions tab
8
+ workflow_dispatch:
9
+
10
+ jobs:
11
+ trigger-test-tutorials:
12
+ runs-on: ubuntu-latest
13
+
14
+ steps:
15
+ - name: Checkout develop branch
16
+ uses: actions/checkout@v5
17
+ with:
18
+ ref: develop
19
+
20
+ - name: Trigger test-tutorials workflow
21
+ uses: actions/github-script@v7
22
+ with:
23
+ github-token: ${{ secrets.GITHUB_TOKEN }}
24
+ script: |
25
+ await github.rest.actions.createWorkflowDispatch({
26
+ owner: context.repo.owner,
27
+ repo: context.repo.repo,
28
+ workflow_id: "test-code.yaml",
29
+ ref: "develop"
30
+ });
@@ -0,0 +1,30 @@
1
+ name: Trigger scheduled test tutorials
2
+
3
+ on:
4
+ # Run daily, at 00:00.
5
+ schedule:
6
+ - cron: '0 0 * * *'
7
+ # Allows you to run this workflow manually from the Actions tab
8
+ workflow_dispatch:
9
+
10
+ jobs:
11
+ trigger-test-tutorials:
12
+ runs-on: ubuntu-latest
13
+
14
+ steps:
15
+ - name: Checkout develop branch
16
+ uses: actions/checkout@v5
17
+ with:
18
+ ref: develop
19
+
20
+ - name: Trigger test-tutorials workflow
21
+ uses: actions/github-script@v7
22
+ with:
23
+ github-token: ${{ secrets.GITHUB_TOKEN }}
24
+ script: |
25
+ await github.rest.actions.createWorkflowDispatch({
26
+ owner: context.repo.owner,
27
+ repo: context.repo.repo,
28
+ workflow_id: "test-tutorials.yaml",
29
+ ref: "develop"
30
+ });
@@ -19,6 +19,6 @@ jobs:
19
19
  github-token: ${{ secrets.GITHUB_TOKEN }}
20
20
  valid-labels:
21
21
  '[scope] bug, [scope] documentation, [scope] enhancement, [scope]
22
- maintenance, [scope] significant'
22
+ maintenance, [scope] significant, [maintainer] release'
23
23
  pull-request-number: ${{ github.event.pull_request.number }}
24
24
  disable-reviews: false
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: easydiffraction
3
- Version: 0.7.0
3
+ Version: 0.7.2
4
4
  Summary: Diffraction data analysis
5
5
  Project-URL: homepage, https://easydiffraction.org
6
6
  Project-URL: documentation, https://docs.easydiffraction.org/lib