easydiffraction 0.7.2__tar.gz → 0.8.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.
- easydiffraction-0.8.0/.badgery.yaml +74 -0
- easydiffraction-0.8.0/.github/workflows/backmerge-pr.yaml +96 -0
- easydiffraction-0.7.2/.github/workflows/delete-old-runs.yml → easydiffraction-0.8.0/.github/workflows/cleanup.yaml +1 -1
- easydiffraction-0.8.0/.github/workflows/coverage.yaml +147 -0
- easydiffraction-0.8.0/.github/workflows/dashboard.yaml +90 -0
- easydiffraction-0.7.2/.github/workflows/build-docs.yml → easydiffraction-0.8.0/.github/workflows/docs.yaml +19 -9
- easydiffraction-0.8.0/.github/workflows/labels.yaml +45 -0
- easydiffraction-0.7.2/.github/workflows/publish-pypi.yml → easydiffraction-0.8.0/.github/workflows/pypi-publish.yaml +13 -10
- easydiffraction-0.8.0/.github/workflows/pypi-test.yaml +99 -0
- easydiffraction-0.8.0/.github/workflows/quality.yaml +123 -0
- easydiffraction-0.7.2/.github/workflows/draft-release-notes.yml → easydiffraction-0.8.0/.github/workflows/release-notes.yaml +8 -5
- easydiffraction-0.8.0/.github/workflows/release-pr.yaml +43 -0
- easydiffraction-0.7.2/.github/workflows/scan-security.yml → easydiffraction-0.8.0/.github/workflows/security.yaml +1 -2
- easydiffraction-0.7.2/.github/workflows/trigger-test-code.yaml → easydiffraction-0.8.0/.github/workflows/test-trigger.yaml +4 -4
- easydiffraction-0.7.2/.github/workflows/test-code.yaml → easydiffraction-0.8.0/.github/workflows/test.yaml +89 -120
- easydiffraction-0.7.2/.github/workflows/test-tutorials-colab.yaml → easydiffraction-0.8.0/.github/workflows/tutorial-tests-colab.yaml +2 -2
- easydiffraction-0.7.2/.github/workflows/trigger-test-tutorials.yaml → easydiffraction-0.8.0/.github/workflows/tutorial-tests-trigger.yaml +4 -4
- easydiffraction-0.7.2/.github/workflows/test-tutorials.yaml → easydiffraction-0.8.0/.github/workflows/tutorial-tests.yaml +36 -49
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/.gitignore +9 -0
- easydiffraction-0.8.0/.pre-commit-config.yaml +57 -0
- easydiffraction-0.8.0/.prettierignore +6 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/DEVELOPMENT.md +39 -6
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/PKG-INFO +39 -1
- easydiffraction-0.8.0/docs/api-reference/display.md +1 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/api-reference/index.md +1 -1
- easydiffraction-0.8.0/docs/api-reference/io.md +1 -0
- easydiffraction-0.8.0/docs/architecture/package-structure-full.md +278 -0
- easydiffraction-0.8.0/docs/architecture/package-structure-short.md +142 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/installation-and-setup/index.md +2 -2
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/mkdocs.yml +7 -5
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/tutorials/index.md +14 -4
- easydiffraction-0.8.0/out.prof +0 -0
- easydiffraction-0.8.0/pixi.lock +10939 -0
- easydiffraction-0.8.0/pixi.toml +211 -0
- easydiffraction-0.8.0/pyproject.toml +280 -0
- easydiffraction-0.8.0/pytest.ini +13 -0
- easydiffraction-0.8.0/src/easydiffraction/__init__.py +28 -0
- easydiffraction-0.8.0/src/easydiffraction/__main__.py +53 -0
- easydiffraction-0.8.0/src/easydiffraction/analysis/__init__.py +2 -0
- easydiffraction-0.8.0/src/easydiffraction/analysis/analysis.py +594 -0
- easydiffraction-0.8.0/src/easydiffraction/analysis/calculators/__init__.py +2 -0
- easydiffraction-0.8.0/src/easydiffraction/analysis/calculators/base.py +57 -0
- easydiffraction-0.7.2/src/easydiffraction/analysis/calculators/calculator_crysfml.py → easydiffraction-0.8.0/src/easydiffraction/analysis/calculators/crysfml.py +51 -40
- easydiffraction-0.7.2/src/easydiffraction/analysis/calculators/calculator_cryspy.py → easydiffraction-0.8.0/src/easydiffraction/analysis/calculators/cryspy.py +106 -76
- easydiffraction-0.7.2/src/easydiffraction/analysis/calculators/calculator_factory.py → easydiffraction-0.8.0/src/easydiffraction/analysis/calculators/factory.py +45 -11
- easydiffraction-0.7.2/src/easydiffraction/analysis/calculators/calculator_pdffit.py → easydiffraction-0.8.0/src/easydiffraction/analysis/calculators/pdffit.py +35 -18
- easydiffraction-0.8.0/src/easydiffraction/analysis/categories/__init__.py +2 -0
- easydiffraction-0.8.0/src/easydiffraction/analysis/categories/aliases.py +106 -0
- easydiffraction-0.8.0/src/easydiffraction/analysis/categories/constraints.py +111 -0
- easydiffraction-0.8.0/src/easydiffraction/analysis/categories/joint_fit_experiments.py +104 -0
- easydiffraction-0.8.0/src/easydiffraction/analysis/fit_helpers/__init__.py +2 -0
- {easydiffraction-0.7.2/src/easydiffraction/analysis/fitting → easydiffraction-0.8.0/src/easydiffraction/analysis/fit_helpers}/metrics.py +22 -22
- easydiffraction-0.8.0/src/easydiffraction/analysis/fit_helpers/reporting.py +178 -0
- easydiffraction-0.8.0/src/easydiffraction/analysis/fit_helpers/tracking.py +259 -0
- easydiffraction-0.7.2/src/easydiffraction/analysis/minimization.py → easydiffraction-0.8.0/src/easydiffraction/analysis/fitting.py +51 -49
- easydiffraction-0.8.0/src/easydiffraction/analysis/minimizers/__init__.py +2 -0
- easydiffraction-0.7.2/src/easydiffraction/analysis/minimizers/minimizer_base.py → easydiffraction-0.8.0/src/easydiffraction/analysis/minimizers/base.py +51 -13
- easydiffraction-0.7.2/src/easydiffraction/analysis/minimizers/minimizer_dfols.py → easydiffraction-0.8.0/src/easydiffraction/analysis/minimizers/dfols.py +13 -15
- easydiffraction-0.7.2/src/easydiffraction/analysis/minimizers/minimizer_factory.py → easydiffraction-0.8.0/src/easydiffraction/analysis/minimizers/factory.py +16 -16
- easydiffraction-0.7.2/src/easydiffraction/analysis/minimizers/minimizer_lmfit.py → easydiffraction-0.8.0/src/easydiffraction/analysis/minimizers/lmfit.py +18 -25
- easydiffraction-0.8.0/src/easydiffraction/core/__init__.py +2 -0
- easydiffraction-0.8.0/src/easydiffraction/core/category.py +115 -0
- easydiffraction-0.8.0/src/easydiffraction/core/collection.py +102 -0
- easydiffraction-0.8.0/src/easydiffraction/core/datablock.py +128 -0
- easydiffraction-0.8.0/src/easydiffraction/core/diagnostic.py +217 -0
- easydiffraction-0.8.0/src/easydiffraction/core/factory.py +36 -0
- easydiffraction-0.8.0/src/easydiffraction/core/guard.py +143 -0
- easydiffraction-0.8.0/src/easydiffraction/core/identity.py +77 -0
- easydiffraction-0.8.0/src/easydiffraction/core/parameters.py +401 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/src/easydiffraction/core/singletons.py +46 -29
- easydiffraction-0.8.0/src/easydiffraction/core/validation.py +345 -0
- easydiffraction-0.8.0/src/easydiffraction/crystallography/__init__.py +2 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/src/easydiffraction/crystallography/crystallography.py +27 -26
- easydiffraction-0.8.0/src/easydiffraction/crystallography/space_groups.pkl.gz +0 -0
- easydiffraction-0.8.0/src/easydiffraction/crystallography/space_groups.py +33 -0
- easydiffraction-0.8.0/src/easydiffraction/display/__init__.py +17 -0
- easydiffraction-0.8.0/src/easydiffraction/display/base.py +135 -0
- easydiffraction-0.8.0/src/easydiffraction/display/plotters/__init__.py +10 -0
- easydiffraction-0.8.0/src/easydiffraction/display/plotters/ascii.py +86 -0
- easydiffraction-0.8.0/src/easydiffraction/display/plotters/base.py +83 -0
- easydiffraction-0.7.2/src/easydiffraction/plotting/plotters/plotter_plotly.py → easydiffraction-0.8.0/src/easydiffraction/display/plotters/plotly.py +41 -8
- easydiffraction-0.8.0/src/easydiffraction/display/plotting.py +440 -0
- easydiffraction-0.8.0/src/easydiffraction/display/tablers/__init__.py +10 -0
- easydiffraction-0.8.0/src/easydiffraction/display/tablers/base.py +109 -0
- easydiffraction-0.8.0/src/easydiffraction/display/tablers/pandas.py +169 -0
- easydiffraction-0.8.0/src/easydiffraction/display/tablers/rich.py +153 -0
- easydiffraction-0.8.0/src/easydiffraction/display/tables.py +118 -0
- easydiffraction-0.8.0/src/easydiffraction/display/utils.py +48 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/__init__.py +2 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/categories/__init__.py +2 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/categories/background/__init__.py +2 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/categories/background/base.py +22 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/categories/background/chebyshev.py +163 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/categories/background/enums.py +27 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/categories/background/factory.py +66 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/categories/background/line_segment.py +169 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/categories/data/bragg_pd.py +440 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/categories/data/bragg_sc.py +96 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/categories/data/factory.py +76 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/categories/data/total.py +267 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/categories/excluded_regions.py +161 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/categories/experiment_type.py +156 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/categories/instrument/__init__.py +2 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/categories/instrument/base.py +24 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/categories/instrument/cwl.py +72 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/categories/instrument/factory.py +74 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/categories/instrument/tof.py +153 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/categories/linked_phases.py +86 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/categories/peak/__init__.py +2 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/categories/peak/base.py +13 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/categories/peak/cwl.py +45 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/categories/peak/cwl_mixins.py +332 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/categories/peak/factory.py +130 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/categories/peak/tof.py +44 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/categories/peak/tof_mixins.py +293 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/categories/peak/total.py +17 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/categories/peak/total_mixins.py +181 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/experiment/__init__.py +16 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/experiment/base.py +264 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/experiment/bragg_pd.py +134 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/experiment/bragg_sc.py +28 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/experiment/enums.py +119 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/experiment/factory.py +181 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/experiment/instrument_mixin.py +46 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/experiment/total_pd.py +59 -0
- easydiffraction-0.8.0/src/easydiffraction/experiments/experiments.py +134 -0
- easydiffraction-0.8.0/src/easydiffraction/io/__init__.py +2 -0
- easydiffraction-0.8.0/src/easydiffraction/io/cif/__init__.py +2 -0
- easydiffraction-0.8.0/src/easydiffraction/io/cif/handler.py +33 -0
- easydiffraction-0.8.0/src/easydiffraction/io/cif/parse.py +34 -0
- easydiffraction-0.8.0/src/easydiffraction/io/cif/serialize.py +356 -0
- easydiffraction-0.8.0/src/easydiffraction/project/__init__.py +2 -0
- easydiffraction-0.8.0/src/easydiffraction/project/project.py +289 -0
- easydiffraction-0.8.0/src/easydiffraction/project/project_info.py +105 -0
- easydiffraction-0.8.0/src/easydiffraction/sample_models/__init__.py +2 -0
- easydiffraction-0.8.0/src/easydiffraction/sample_models/categories/__init__.py +2 -0
- easydiffraction-0.8.0/src/easydiffraction/sample_models/categories/atom_sites.py +334 -0
- easydiffraction-0.8.0/src/easydiffraction/sample_models/categories/cell.py +188 -0
- easydiffraction-0.8.0/src/easydiffraction/sample_models/categories/space_group.py +107 -0
- easydiffraction-0.8.0/src/easydiffraction/sample_models/sample_model/__init__.py +2 -0
- easydiffraction-0.8.0/src/easydiffraction/sample_models/sample_model/base.py +183 -0
- easydiffraction-0.8.0/src/easydiffraction/sample_models/sample_model/factory.py +103 -0
- easydiffraction-0.8.0/src/easydiffraction/sample_models/sample_models.py +87 -0
- easydiffraction-0.8.0/src/easydiffraction/summary/__init__.py +2 -0
- easydiffraction-0.8.0/src/easydiffraction/summary/summary.py +213 -0
- easydiffraction-0.8.0/src/easydiffraction/utils/__init__.py +2 -0
- easydiffraction-0.8.0/src/easydiffraction/utils/environment.py +140 -0
- easydiffraction-0.8.0/src/easydiffraction/utils/logging.py +589 -0
- easydiffraction-0.8.0/src/easydiffraction/utils/utils.py +651 -0
- {easydiffraction-0.7.2/tests/functional → easydiffraction-0.8.0/tests/integration}/fitting/test_pair-distribution-function.py +48 -20
- {easydiffraction-0.7.2/tests/functional → easydiffraction-0.8.0/tests/integration}/fitting/test_powder-diffraction_constant-wavelength.py +236 -74
- easydiffraction-0.8.0/tests/integration/fitting/test_powder-diffraction_joint-fit.py +328 -0
- {easydiffraction-0.7.2/tests/functional → easydiffraction-0.8.0/tests/integration}/fitting/test_powder-diffraction_multiphase.py +69 -22
- {easydiffraction-0.7.2/tests/functional → easydiffraction-0.8.0/tests/integration}/fitting/test_powder-diffraction_time-of-flight.py +97 -31
- easydiffraction-0.8.0/tests/integration/scipp-analysis/dream/test_scipp-cif.py +74 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/analysis/calculators/test_base.py +7 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/analysis/calculators/test_crysfml.py +29 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/analysis/calculators/test_cryspy.py +25 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/analysis/calculators/test_factory.py +41 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/analysis/calculators/test_pdffit.py +98 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/analysis/categories/test_aliases.py +15 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/analysis/categories/test_constraints.py +14 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/analysis/categories/test_joint_fit_experiments.py +15 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/analysis/fit_helpers/test_metrics.py +54 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/analysis/fit_helpers/test_reporting.py +60 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/analysis/fit_helpers/test_tracking.py +45 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/analysis/minimizers/test_base.py +107 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/analysis/minimizers/test_dfols.py +50 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/analysis/minimizers/test_factory.py +51 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/analysis/minimizers/test_lmfit.py +73 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/analysis/test_analysis.py +84 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/analysis/test_analysis_access_params.py +83 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/analysis/test_analysis_show_empty.py +39 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/analysis/test_fitting.py +36 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/core/test_category.py +67 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/core/test_collection.py +31 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/core/test_datablock.py +73 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/core/test_diagnostic.py +33 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/core/test_factory.py +29 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/core/test_guard.py +53 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/core/test_identity.py +30 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/core/test_parameters.py +100 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/core/test_singletons.py +12 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/core/test_validation.py +65 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/crystallography/test_crystallography.py +9 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/crystallography/test_space_groups.py +9 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/display/plotters/test_ascii.py +23 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/display/plotters/test_base.py +39 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/display/plotters/test_plotly.py +87 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/display/test_plotting.py +144 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/experiments/categories/background/test_base.py +61 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/experiments/categories/background/test_chebyshev.py +31 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/experiments/categories/background/test_enums.py +11 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/experiments/categories/background/test_factory.py +24 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/experiments/categories/background/test_line_segment.py +39 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/experiments/categories/instrument/test_base.py +12 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/experiments/categories/instrument/test_cwl.py +12 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/experiments/categories/instrument/test_factory.py +37 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/experiments/categories/instrument/test_tof.py +44 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/experiments/categories/peak/test_base.py +13 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/experiments/categories/peak/test_cwl.py +34 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/experiments/categories/peak/test_cwl_mixins.py +30 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/experiments/categories/peak/test_factory.py +58 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/experiments/categories/peak/test_tof.py +25 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/experiments/categories/peak/test_tof_mixins.py +38 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/experiments/categories/peak/test_total.py +36 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/experiments/categories/peak/test_total_mixins.py +12 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/experiments/categories/test_excluded_regions.py +52 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/experiments/categories/test_experiment_type.py +36 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/experiments/categories/test_linked_phases.py +16 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/experiments/experiment/test_base.py +38 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/experiments/experiment/test_bragg_pd.py +73 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/experiments/experiment/test_bragg_sc.py +35 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/experiments/experiment/test_enums.py +18 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/experiments/experiment/test_factory.py +35 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/experiments/experiment/test_instrument_mixin.py +9 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/experiments/experiment/test_total_pd.py +51 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/experiments/test_experiments.py +40 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/io/cif/test_handler.py +16 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/io/cif/test_serialize.py +83 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/io/cif/test_serialize_more.py +142 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/project/test_project.py +9 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/project/test_project_info.py +9 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/project/test_project_load_and_summary_wrap.py +39 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/project/test_project_save.py +39 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/sample_models/categories/test_atom_sites.py +28 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/sample_models/categories/test_cell.py +43 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/sample_models/categories/test_space_group.py +15 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/sample_models/sample_model/test_base.py +12 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/sample_models/sample_model/test_factory.py +16 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/sample_models/test_sample_models.py +6 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/summary/test_summary.py +60 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/summary/test_summary_details.py +135 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/test___init__.py +68 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/test___main__.py +54 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/utils/test_logging.py +25 -0
- easydiffraction-0.8.0/tests/unit/easydiffraction/utils/test_utils.py +200 -0
- easydiffraction-0.8.0/tmp/Untitled.ipynb +567 -0
- easydiffraction-0.8.0/tmp/Untitled0.ipynb +492 -0
- easydiffraction-0.8.0/tmp/Untitled1.ipynb +149 -0
- easydiffraction-0.8.0/tmp/Untitled2.ipynb +6 -0
- easydiffraction-0.8.0/tmp/_gemmi.py +613 -0
- easydiffraction-0.8.0/tmp/_read_cif.py +184 -0
- easydiffraction-0.8.0/tmp/_smart.py +162 -0
- easydiffraction-0.8.0/tmp/basic_single-fit_pd-neut-cwl_LBCO-HRPT.py +750 -0
- {easydiffraction-0.7.2/tutorials-drafts → easydiffraction-0.8.0/tmp}/cryst-struct_pd-neut-tof_multiphase-BSFTO-HRPT.py +23 -23
- easydiffraction-0.8.0/tmp/data/hrpt.cif +3140 -0
- easydiffraction-0.8.0/tmp/data/large_structure.cif +5025 -0
- easydiffraction-0.8.0/tmp/data/lbco.cif +36 -0
- easydiffraction-0.8.0/tmp/display.py +413 -0
- easydiffraction-0.8.0/tmp/display2.py +28 -0
- easydiffraction-0.8.0/tmp/display3-Copy1.py +45 -0
- easydiffraction-0.8.0/tmp/display3.py +173 -0
- easydiffraction-0.8.0/tmp/generate_overview_mermaid.py +309 -0
- easydiffraction-0.8.0/tmp/short.py +94 -0
- easydiffraction-0.8.0/tmp/short2.py +228 -0
- easydiffraction-0.7.2/tutorials/quick_single-fit_pd-neut-cwl_LBCO-HRPT.py → easydiffraction-0.8.0/tmp/short3.py +34 -22
- easydiffraction-0.8.0/tmp/short5.py +316 -0
- easydiffraction-0.8.0/tmp/short6.py +85 -0
- easydiffraction-0.8.0/tmp/short7.py +129 -0
- {easydiffraction-0.7.2/tutorials-drafts → easydiffraction-0.8.0/tmp}/test_single-fit_pd-neut-tof_Si-DREAM_nc.py +49 -34
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/tools/create_mkdocs_yml.py +35 -45
- easydiffraction-0.8.0/tools/gen_tests_scaffold.py +107 -0
- easydiffraction-0.8.0/tools/generate_package_docs.py +172 -0
- easydiffraction-0.8.0/tools/naming_check.py +117 -0
- easydiffraction-0.8.0/tools/test_scripts.py +57 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/tools/tweak_notebooks.py +20 -23
- easydiffraction-0.8.0/tools/update_spdx.py +95 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/tutorials/advanced_joint-fit_pd-neut-xray-cwl_PbSO4.py +94 -50
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/tutorials/basic_single-fit_pd-neut-cwl_LBCO-HRPT.py +41 -35
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/tutorials/cryst-struct_pd-neut-cwl_CoSiO4-D20.py +87 -55
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/tutorials/cryst-struct_pd-neut-cwl_HS-HRPT.py +74 -49
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/tutorials/cryst-struct_pd-neut-tof_Si-SEPD.py +25 -22
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/tutorials/cryst-struct_pd-neut-tof_multidata_NCAF-WISH.py +154 -102
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/tutorials/cryst-struct_pd-neut-tof_multiphase-LBCO-Si_McStas.py +64 -66
- easydiffraction-0.8.0/tutorials/dmsc-summer-school-2025_analysis-powder-diffraction.py +1495 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/tutorials/pdf_pd-neut-cwl_Ni.py +13 -13
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/tutorials/pdf_pd-neut-tof_Si-NOMAD.py +21 -8
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/tutorials/pdf_pd-xray_NaCl.py +26 -8
- easydiffraction-0.8.0/tutorials/quick_from-cif_pd-neut-cwl_LBCO-HRPT.py +73 -0
- easydiffraction-0.8.0/tutorials/quick_from-code_pd-neut-cwl_LBCO-HRPT.py +165 -0
- easydiffraction-0.7.2/.github/workflows/create-release-pr.yml +0 -35
- easydiffraction-0.7.2/.github/workflows/test-package-pypi.yaml +0 -64
- easydiffraction-0.7.2/.github/workflows/verify-pr-labels.yml +0 -24
- easydiffraction-0.7.2/.prettierignore +0 -2
- easydiffraction-0.7.2/docs/api-reference/plotting.md +0 -1
- easydiffraction-0.7.2/pixi/prod/pixi.toml +0 -23
- easydiffraction-0.7.2/pixi/wheel/pixi.toml +0 -31
- easydiffraction-0.7.2/pixi.lock +0 -17410
- easydiffraction-0.7.2/pixi.toml +0 -163
- easydiffraction-0.7.2/pyproject.toml +0 -176
- easydiffraction-0.7.2/pytest.ini +0 -3
- easydiffraction-0.7.2/src/easydiffraction/__init__.py +0 -128
- easydiffraction-0.7.2/src/easydiffraction/__main__.py +0 -37
- easydiffraction-0.7.2/src/easydiffraction/analysis/__init__.py +0 -3
- easydiffraction-0.7.2/src/easydiffraction/analysis/analysis.py +0 -470
- easydiffraction-0.7.2/src/easydiffraction/analysis/calculation.py +0 -73
- easydiffraction-0.7.2/src/easydiffraction/analysis/calculators/__init__.py +0 -3
- easydiffraction-0.7.2/src/easydiffraction/analysis/calculators/calculator_base.py +0 -151
- easydiffraction-0.7.2/src/easydiffraction/analysis/collections/__init__.py +0 -3
- easydiffraction-0.7.2/src/easydiffraction/analysis/collections/aliases.py +0 -50
- easydiffraction-0.7.2/src/easydiffraction/analysis/collections/constraints.py +0 -50
- easydiffraction-0.7.2/src/easydiffraction/analysis/collections/joint_fit_experiments.py +0 -55
- easydiffraction-0.7.2/src/easydiffraction/analysis/fitting/__init__.py +0 -3
- easydiffraction-0.7.2/src/easydiffraction/analysis/fitting/progress_tracker.py +0 -222
- easydiffraction-0.7.2/src/easydiffraction/analysis/fitting/results.py +0 -126
- easydiffraction-0.7.2/src/easydiffraction/analysis/minimizers/__init__.py +0 -3
- easydiffraction-0.7.2/src/easydiffraction/core/__init__.py +0 -3
- easydiffraction-0.7.2/src/easydiffraction/core/objects.py +0 -511
- easydiffraction-0.7.2/src/easydiffraction/crystallography/__init__.py +0 -3
- easydiffraction-0.7.2/src/easydiffraction/crystallography/space_group_lookup_table.py +0 -25508
- easydiffraction-0.7.2/src/easydiffraction/experiments/__init__.py +0 -3
- easydiffraction-0.7.2/src/easydiffraction/experiments/collections/__init__.py +0 -3
- easydiffraction-0.7.2/src/easydiffraction/experiments/collections/background.py +0 -236
- easydiffraction-0.7.2/src/easydiffraction/experiments/collections/excluded_regions.py +0 -100
- easydiffraction-0.7.2/src/easydiffraction/experiments/collections/linked_phases.py +0 -61
- easydiffraction-0.7.2/src/easydiffraction/experiments/components/__init__.py +0 -3
- easydiffraction-0.7.2/src/easydiffraction/experiments/components/experiment_type.py +0 -118
- easydiffraction-0.7.2/src/easydiffraction/experiments/components/instrument.py +0 -130
- easydiffraction-0.7.2/src/easydiffraction/experiments/components/peak.py +0 -435
- easydiffraction-0.7.2/src/easydiffraction/experiments/datastore.py +0 -250
- easydiffraction-0.7.2/src/easydiffraction/experiments/experiment.py +0 -570
- easydiffraction-0.7.2/src/easydiffraction/experiments/experiments.py +0 -114
- easydiffraction-0.7.2/src/easydiffraction/plotting/__init__.py +0 -3
- easydiffraction-0.7.2/src/easydiffraction/plotting/plotters/__init__.py +0 -3
- easydiffraction-0.7.2/src/easydiffraction/plotting/plotters/plotter_ascii.py +0 -50
- easydiffraction-0.7.2/src/easydiffraction/plotting/plotters/plotter_base.py +0 -53
- easydiffraction-0.7.2/src/easydiffraction/plotting/plotting.py +0 -364
- easydiffraction-0.7.2/src/easydiffraction/project.py +0 -361
- easydiffraction-0.7.2/src/easydiffraction/sample_models/__init__.py +0 -3
- easydiffraction-0.7.2/src/easydiffraction/sample_models/collections/__init__.py +0 -3
- easydiffraction-0.7.2/src/easydiffraction/sample_models/collections/atom_sites.py +0 -114
- easydiffraction-0.7.2/src/easydiffraction/sample_models/components/__init__.py +0 -3
- easydiffraction-0.7.2/src/easydiffraction/sample_models/components/cell.py +0 -77
- easydiffraction-0.7.2/src/easydiffraction/sample_models/components/space_group.py +0 -45
- easydiffraction-0.7.2/src/easydiffraction/sample_models/sample_model.py +0 -205
- easydiffraction-0.7.2/src/easydiffraction/sample_models/sample_models.py +0 -130
- easydiffraction-0.7.2/src/easydiffraction/summary.py +0 -197
- easydiffraction-0.7.2/src/easydiffraction/utils/__init__.py +0 -3
- easydiffraction-0.7.2/src/easydiffraction/utils/decorators.py +0 -45
- easydiffraction-0.7.2/src/easydiffraction/utils/formatting.py +0 -55
- easydiffraction-0.7.2/src/easydiffraction/utils/utils.py +0 -664
- easydiffraction-0.7.2/tests/functional/fitting/test_powder-diffraction_joint-fit.py +0 -230
- easydiffraction-0.7.2/tests/unit/analysis/calculators/test_calculator_base.py +0 -83
- easydiffraction-0.7.2/tests/unit/analysis/calculators/test_calculator_cryspy.py +0 -103
- easydiffraction-0.7.2/tests/unit/analysis/calculators/test_calculator_factory.py +0 -65
- easydiffraction-0.7.2/tests/unit/analysis/collections/test_joint_fit_experiment.py +0 -22
- easydiffraction-0.7.2/tests/unit/analysis/minimizers/test_fitting_progress_tracker.py +0 -98
- easydiffraction-0.7.2/tests/unit/analysis/minimizers/test_minimizer_base.py +0 -116
- easydiffraction-0.7.2/tests/unit/analysis/minimizers/test_minimizer_dfols.py +0 -79
- easydiffraction-0.7.2/tests/unit/analysis/minimizers/test_minimizer_factory.py +0 -66
- easydiffraction-0.7.2/tests/unit/analysis/minimizers/test_minimizer_lmfit.py +0 -98
- easydiffraction-0.7.2/tests/unit/analysis/test_analysis.py +0 -157
- easydiffraction-0.7.2/tests/unit/analysis/test_minimization.py +0 -163
- easydiffraction-0.7.2/tests/unit/analysis/test_reliability_factors.py +0 -110
- easydiffraction-0.7.2/tests/unit/core/test_objects.py +0 -128
- easydiffraction-0.7.2/tests/unit/core/test_singletons.py +0 -87
- easydiffraction-0.7.2/tests/unit/experiments/collections/test_background.py +0 -106
- easydiffraction-0.7.2/tests/unit/experiments/collections/test_datastore.py +0 -181
- easydiffraction-0.7.2/tests/unit/experiments/collections/test_linked_phases.py +0 -46
- easydiffraction-0.7.2/tests/unit/experiments/components/test_experiment_type.py +0 -54
- easydiffraction-0.7.2/tests/unit/experiments/components/test_instrument.py +0 -85
- easydiffraction-0.7.2/tests/unit/experiments/components/test_peak.py +0 -145
- easydiffraction-0.7.2/tests/unit/experiments/test_experiment.py +0 -153
- easydiffraction-0.7.2/tests/unit/experiments/test_experiments.py +0 -86
- easydiffraction-0.7.2/tests/unit/sample_models/collections/test_atom_sites.py +0 -86
- easydiffraction-0.7.2/tests/unit/sample_models/components/test_cell.py +0 -37
- easydiffraction-0.7.2/tests/unit/sample_models/components/test_space_group.py +0 -31
- easydiffraction-0.7.2/tests/unit/sample_models/test_sample_models.py +0 -80
- easydiffraction-0.7.2/tests/unit/test_project.py +0 -194
- easydiffraction-0.7.2/tests/unit/test_symmetry_lookup_table.py +0 -128
- easydiffraction-0.7.2/tools/test_scripts.py +0 -25
- easydiffraction-0.7.2/tools/update_spdx.py +0 -67
- easydiffraction-0.7.2/tutorials/data/NOM_9999_Si_640g_PAC_50_ff_ftfrgr_up-to-50.gr +0 -5037
- easydiffraction-0.7.2/tutorials/data/NaCl.gr +0 -5028
- easydiffraction-0.7.2/tutorials/data/co2sio4_d20.xye +0 -1418
- easydiffraction-0.7.2/tutorials/data/d1a_pbso4.dat +0 -1801
- easydiffraction-0.7.2/tutorials/data/d1a_pbso4_first-half.dat +0 -1800
- easydiffraction-0.7.2/tutorials/data/d1a_pbso4_second-half.dat +0 -1110
- easydiffraction-0.7.2/tutorials/data/hrpt_hs.xye +0 -3220
- easydiffraction-0.7.2/tutorials/data/lab_pbso4.dat +0 -3601
- easydiffraction-0.7.2/tutorials/data/mcstas_lbco-si.xye +0 -1002
- easydiffraction-0.7.2/tutorials/data/ni-q27r100-neutron_from-2.gr +0 -9853
- easydiffraction-0.7.2/tutorials/data/sepd_si.xye +0 -5600
- easydiffraction-0.7.2/tutorials/data/wish_ncaf_5_6.xys +0 -4121
- easydiffraction-0.7.2/tutorials/dmsc-summer-school-2025_analysis-powder-diffraction.py +0 -1431
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/CONTRIBUTING.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/LICENSE +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/README.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/deps/pycrysfml-0.1.6-py312-none-macosx_14_0_arm64.whl +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/deps/pycrysfml-0.1.6-py312-none-win_amd64.whl +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/api-reference/analysis.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/api-reference/core.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/api-reference/crystallography.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/api-reference/experiments.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/api-reference/project.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/api-reference/sample_models.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/api-reference/summary.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/api-reference/utils.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/assets/images/user-guide/data-acquisition_2d-raw-data.jpg +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/assets/images/user-guide/data-acquisition_instrument.png +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/assets/images/user-guide/data-analysis_model.png +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/assets/images/user-guide/data-analysis_refinement.png +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/assets/images/user-guide/data-reduction_1d-pattern.png +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/index.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/introduction/index.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/user-guide/analysis-workflow/analysis.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/user-guide/analysis-workflow/experiment.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/user-guide/analysis-workflow/index.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/user-guide/analysis-workflow/model.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/user-guide/analysis-workflow/project.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/user-guide/analysis-workflow/summary.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/user-guide/concept.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/user-guide/data-format.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/user-guide/first-steps.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/user-guide/glossary.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/user-guide/index.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/user-guide/parameters/_diffrn_radiation.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/user-guide/parameters/_diffrn_radiation_wavelength.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/user-guide/parameters/_exptl_crystal.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/user-guide/parameters/_extinction.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/user-guide/parameters/_pd_calib.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/user-guide/parameters/atom_site.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/user-guide/parameters/background.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/user-guide/parameters/cell.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/user-guide/parameters/expt_type.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/user-guide/parameters/instrument.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/user-guide/parameters/linked_phases.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/user-guide/parameters/pd_meas.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/user-guide/parameters/peak.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/user-guide/parameters/space_group.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/docs/user-guide/parameters.md +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/prettierrc.toml +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/pycrysfml.md +0 -0
- {easydiffraction-0.7.2/tutorials-drafts → easydiffraction-0.8.0/tmp}/data/DREAM_mantle_bc240_nist_cif.xye +0 -0
- {easydiffraction-0.7.2/tutorials-drafts → easydiffraction-0.8.0/tmp}/data/DREAM_mantle_bc240_nist_cif_2.xye +0 -0
- {easydiffraction-0.7.2/tutorials-drafts → easydiffraction-0.8.0/tmp}/data/DREAM_mantle_bc240_nist_nc.xye +0 -0
- {easydiffraction-0.7.2/tutorials-drafts → easydiffraction-0.8.0/tmp}/data/DREAM_mantle_bc240_nist_nc_2.xye +0 -0
- {easydiffraction-0.7.2/tutorials-drafts → easydiffraction-0.8.0/tmp}/data/Si_mp-149_symmetrized_mcstas.cif +0 -0
- {easydiffraction-0.7.2/tutorials → easydiffraction-0.8.0/tmp}/data/hrpt_lbco.xye +0 -0
- {easydiffraction-0.7.2/tutorials/data → easydiffraction-0.8.0/tmp/data_old}/mcstas_lbco-si.xys +0 -0
- {easydiffraction-0.7.2/tutorials/data → easydiffraction-0.8.0/tmp/data_old}/mcstas_lbco-si_up-to-108k.xys +0 -0
- {easydiffraction-0.7.2/tutorials/data → easydiffraction-0.8.0/tmp/data_old}/powder_reduced_Si_2large_bank.xye +0 -0
- {easydiffraction-0.7.2/tutorials/data → easydiffraction-0.8.0/tmp/data_old}/reduced_LBCO.xye +0 -0
- {easydiffraction-0.7.2/tutorials/data → easydiffraction-0.8.0/tmp/data_old}/reduced_Si.xye +0 -0
- {easydiffraction-0.7.2/tutorials/data → easydiffraction-0.8.0/tmp/data_old}/wish_ncaf.xye +0 -0
- {easydiffraction-0.7.2/tutorials/data → easydiffraction-0.8.0/tmp/data_old}/wish_ncaf_2_9.xye +0 -0
- {easydiffraction-0.7.2/tutorials/data → easydiffraction-0.8.0/tmp/data_old}/wish_ncaf_4_7.xye +0 -0
- {easydiffraction-0.7.2/tutorials/data → easydiffraction-0.8.0/tmp/data_old}/wish_ncaf_4_7.xys +0 -0
- {easydiffraction-0.7.2/tutorials/data → easydiffraction-0.8.0/tmp/data_old}/wish_ncaf_5_6.xye +0 -0
- {easydiffraction-0.7.2/tutorials/data → easydiffraction-0.8.0/tmp/data_old}/wish_ybcfo_5_6.xye +0 -0
- {easydiffraction-0.7.2/tutorials-drafts → easydiffraction-0.8.0/tmp}/hrpt_n_Bi0p88Sm0p12Fe0p94Ti0p06O3_DW_V_9x8x52_1p49_HI.xye +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/tools/add_assets_to_docs.sh +0 -0
- {easydiffraction-0.7.2 → easydiffraction-0.8.0}/tools/cleanup_docs.sh +0 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
default_branch: master
|
|
2
|
+
develop_branch: develop
|
|
3
|
+
|
|
4
|
+
cards:
|
|
5
|
+
- group: Tests
|
|
6
|
+
type: gh_action
|
|
7
|
+
title: Code/package tests (GitHub)
|
|
8
|
+
file: test.yaml
|
|
9
|
+
enabled: true
|
|
10
|
+
|
|
11
|
+
- group: Tests
|
|
12
|
+
type: gh_action
|
|
13
|
+
title: Tutorial tests (GitHub)
|
|
14
|
+
file: tutorial-tests.yaml
|
|
15
|
+
enabled: true
|
|
16
|
+
|
|
17
|
+
- group: Tests
|
|
18
|
+
type: gh_action
|
|
19
|
+
title: Package tests (PyPI)
|
|
20
|
+
file: pypi-test.yaml
|
|
21
|
+
enabled: true
|
|
22
|
+
|
|
23
|
+
- group: Code Quality
|
|
24
|
+
type: codefactor
|
|
25
|
+
title: Code quality (CodeFactor)
|
|
26
|
+
enabled: true
|
|
27
|
+
|
|
28
|
+
- group: Code Quality
|
|
29
|
+
type: radon_mi
|
|
30
|
+
title: Maintainability index (radon)
|
|
31
|
+
report: reports/{branch}/maintainability-index.json
|
|
32
|
+
enabled: true
|
|
33
|
+
|
|
34
|
+
- group: Code Quality
|
|
35
|
+
type: radon_cc
|
|
36
|
+
title: Cyclomatic complexity (radon)
|
|
37
|
+
report: reports/{branch}/cyclomatic-complexity.json
|
|
38
|
+
enabled: true
|
|
39
|
+
|
|
40
|
+
- group: Size
|
|
41
|
+
type: radon_loc
|
|
42
|
+
title: Source/Logical lines of code (radon)
|
|
43
|
+
report: reports/{branch}/raw-metrics.json
|
|
44
|
+
enabled: true
|
|
45
|
+
|
|
46
|
+
- group: Size
|
|
47
|
+
type: radon_ff
|
|
48
|
+
title: Functions/Files count (radon)
|
|
49
|
+
report: reports/{branch}/cyclomatic-complexity.json
|
|
50
|
+
enabled: true
|
|
51
|
+
|
|
52
|
+
- group: Coverage
|
|
53
|
+
type: codecov
|
|
54
|
+
title: Unit test coverage (Codecov)
|
|
55
|
+
flag: unittests
|
|
56
|
+
enabled: true
|
|
57
|
+
|
|
58
|
+
- group: Coverage
|
|
59
|
+
type: interrogate
|
|
60
|
+
title: Docstring coverage (interrogate)
|
|
61
|
+
report: reports/{branch}/coverage-docstring.txt
|
|
62
|
+
enabled: true
|
|
63
|
+
|
|
64
|
+
- group: Build & Release
|
|
65
|
+
type: gh_action
|
|
66
|
+
title: Publishing (PyPI)
|
|
67
|
+
workflow: pypi-publish.yaml
|
|
68
|
+
enabled: true
|
|
69
|
+
|
|
70
|
+
- group: Build & Release
|
|
71
|
+
type: gh_action
|
|
72
|
+
title: Docs build/deployment
|
|
73
|
+
workflow: docs.yaml
|
|
74
|
+
enabled: true
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# This workflow creates a backmerge PR into `develop` whenever a new version tag is pushed (v*).
|
|
2
|
+
#
|
|
3
|
+
# Key points:
|
|
4
|
+
# - The PR head is a temporary branch that points at the *tag commit* (refs/tags/vX.Y.Z).
|
|
5
|
+
# After merging, `develop` can `git describe` as vX.Y.Z-... because the tag commit becomes an ancestor.
|
|
6
|
+
# - The PR is auto-merged using a MERGE COMMIT (not squash) via a GitHub App token.
|
|
7
|
+
# The GitHub App must be added to the develop ruleset bypass list.
|
|
8
|
+
#
|
|
9
|
+
# Required repo config:
|
|
10
|
+
# - Actions secret: ES_BACKMERGE_PRIVATE_KEY (GitHub App private key PEM)
|
|
11
|
+
# - Actions variable: ES_BACKMERGE_APP_ID (GitHub App ID)
|
|
12
|
+
|
|
13
|
+
name: Backmerge PR (tag -> develop)
|
|
14
|
+
|
|
15
|
+
on:
|
|
16
|
+
push:
|
|
17
|
+
tags:
|
|
18
|
+
- 'v*'
|
|
19
|
+
|
|
20
|
+
permissions:
|
|
21
|
+
contents: write
|
|
22
|
+
pull-requests: write
|
|
23
|
+
|
|
24
|
+
jobs:
|
|
25
|
+
create-backmerge-pr:
|
|
26
|
+
runs-on: ubuntu-latest
|
|
27
|
+
|
|
28
|
+
steps:
|
|
29
|
+
- name: Create GitHub App installation token
|
|
30
|
+
id: app-token
|
|
31
|
+
uses: actions/create-github-app-token@v2
|
|
32
|
+
with:
|
|
33
|
+
app-id: ${{ vars.ES_BACKMERGE_APP_ID }}
|
|
34
|
+
private-key: ${{ secrets.ES_BACKMERGE_PRIVATE_KEY }}
|
|
35
|
+
|
|
36
|
+
- name: Checkout tag commit
|
|
37
|
+
uses: actions/checkout@v5
|
|
38
|
+
with:
|
|
39
|
+
ref: ${{ github.ref }} # refs/tags/vX.Y.Z
|
|
40
|
+
fetch-depth: 0
|
|
41
|
+
token: ${{ steps.app-token.outputs.token }}
|
|
42
|
+
|
|
43
|
+
- name: Create and push backmerge branch at tag
|
|
44
|
+
id: vars
|
|
45
|
+
run: |
|
|
46
|
+
set -euo pipefail
|
|
47
|
+
|
|
48
|
+
TAG='${{ github.ref_name }}'
|
|
49
|
+
BRANCH="backmerge/${TAG}"
|
|
50
|
+
|
|
51
|
+
echo "tag=${TAG}" >> "$GITHUB_OUTPUT"
|
|
52
|
+
echo "branch=${BRANCH}" >> "$GITHUB_OUTPUT"
|
|
53
|
+
|
|
54
|
+
git config user.name "github-actions[bot]"
|
|
55
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
56
|
+
|
|
57
|
+
# Create/move branch to point exactly at the tag commit
|
|
58
|
+
git checkout -B "$BRANCH"
|
|
59
|
+
|
|
60
|
+
# Push (force makes re-runs idempotent for the same tag)
|
|
61
|
+
git push --force --set-upstream origin "$BRANCH"
|
|
62
|
+
env:
|
|
63
|
+
GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
|
|
64
|
+
|
|
65
|
+
- name:
|
|
66
|
+
Create PR from tag backmerge branch to develop (or reuse if exists)
|
|
67
|
+
run: |
|
|
68
|
+
set -euo pipefail
|
|
69
|
+
|
|
70
|
+
TITLE="Backmerge: ${{ steps.vars.outputs.tag }} into develop"
|
|
71
|
+
|
|
72
|
+
BODY="⚠️ This PR is created automatically for backmerge of a new release tag commit \`${{ steps.vars.outputs.tag }}\` into \`develop\`.
|
|
73
|
+
|
|
74
|
+
It is labeled '[maintainer] auto-pull-request' and is excluded from release notes and version bump logic."
|
|
75
|
+
|
|
76
|
+
if gh pr view --repo "${{ github.repository }}" --head "${{ steps.vars.outputs.branch }}" >/dev/null 2>&1; then
|
|
77
|
+
echo "PR already exists for head=${{ steps.vars.outputs.branch }}"
|
|
78
|
+
else
|
|
79
|
+
gh pr create \
|
|
80
|
+
--repo "${{ github.repository }}" \
|
|
81
|
+
--base develop \
|
|
82
|
+
--head "${{ steps.vars.outputs.branch }}" \
|
|
83
|
+
--title "$TITLE" \
|
|
84
|
+
--label "[maintainer] auto-pull-request" \
|
|
85
|
+
--body "$BODY"
|
|
86
|
+
fi
|
|
87
|
+
env:
|
|
88
|
+
GH_TOKEN: ${{ steps.app-token.outputs.token }}
|
|
89
|
+
|
|
90
|
+
- name: Enable auto-merge using MERGE COMMIT
|
|
91
|
+
run: |
|
|
92
|
+
set -euo pipefail
|
|
93
|
+
# Merge the PR identified by its head branch.
|
|
94
|
+
gh pr merge --repo "${{ github.repository }}" --merge --auto "${{ steps.vars.outputs.branch }}"
|
|
95
|
+
env:
|
|
96
|
+
GH_TOKEN: ${{ steps.app-token.outputs.token }}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
name: Coverage checks
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
# Trigger the workflow on push
|
|
5
|
+
push:
|
|
6
|
+
# Trigger the workflow on pull request
|
|
7
|
+
pull_request:
|
|
8
|
+
# Allows you to run this workflow manually from the Actions tab
|
|
9
|
+
workflow_dispatch:
|
|
10
|
+
|
|
11
|
+
# Need permissions to trigger the dashboard build workflow
|
|
12
|
+
permissions:
|
|
13
|
+
actions: write
|
|
14
|
+
contents: read
|
|
15
|
+
|
|
16
|
+
# Allow only one concurrent workflow, skipping runs queued between the run
|
|
17
|
+
# in-progress and latest queued. And cancel in-progress runs.
|
|
18
|
+
concurrency:
|
|
19
|
+
group:
|
|
20
|
+
${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
|
21
|
+
cancel-in-progress: true
|
|
22
|
+
|
|
23
|
+
# Set the environment variables to be used in all jobs defined in this workflow
|
|
24
|
+
env:
|
|
25
|
+
CI_BRANCH: ${{ github.head_ref || github.ref_name }}
|
|
26
|
+
|
|
27
|
+
jobs:
|
|
28
|
+
# Job 1: Run docstring coverage
|
|
29
|
+
docstring-coverage:
|
|
30
|
+
runs-on: ubuntu-latest
|
|
31
|
+
|
|
32
|
+
steps:
|
|
33
|
+
- name: Check-out repository
|
|
34
|
+
uses: actions/checkout@v5
|
|
35
|
+
|
|
36
|
+
- name: Set up pixi
|
|
37
|
+
uses: prefix-dev/setup-pixi@v0.9.0
|
|
38
|
+
with:
|
|
39
|
+
environments: default
|
|
40
|
+
activate-environment: default
|
|
41
|
+
run-install: true
|
|
42
|
+
frozen: true
|
|
43
|
+
cache: false
|
|
44
|
+
post-cleanup: false
|
|
45
|
+
|
|
46
|
+
- name: Install and setup development dependencies
|
|
47
|
+
shell: bash
|
|
48
|
+
run: pixi run dev
|
|
49
|
+
|
|
50
|
+
- name: Run docstring coverage
|
|
51
|
+
run: pixi run docstring-coverage
|
|
52
|
+
|
|
53
|
+
# Job 2: Run unit tests with coverage and upload to Codecov
|
|
54
|
+
unit-tests-coverage:
|
|
55
|
+
runs-on: ubuntu-latest
|
|
56
|
+
|
|
57
|
+
steps:
|
|
58
|
+
- name: Check-out repository
|
|
59
|
+
uses: actions/checkout@v5
|
|
60
|
+
|
|
61
|
+
- name: Set up pixi
|
|
62
|
+
uses: prefix-dev/setup-pixi@v0.9.0
|
|
63
|
+
with:
|
|
64
|
+
environments: default
|
|
65
|
+
activate-environment: default
|
|
66
|
+
run-install: true
|
|
67
|
+
frozen: true
|
|
68
|
+
cache: false
|
|
69
|
+
post-cleanup: false
|
|
70
|
+
|
|
71
|
+
- name: Install and setup development dependencies
|
|
72
|
+
shell: bash
|
|
73
|
+
run: pixi run dev
|
|
74
|
+
|
|
75
|
+
- name: Run unit tests with coverage
|
|
76
|
+
run: pixi run unit-tests-coverage --cov-report=xml:coverage-unit.xml
|
|
77
|
+
|
|
78
|
+
- name: Upload unit tests coverage to Codecov
|
|
79
|
+
if: ${{ !cancelled() }}
|
|
80
|
+
uses: codecov/codecov-action@v5
|
|
81
|
+
with:
|
|
82
|
+
name: unit-tests-job
|
|
83
|
+
flags: unittests
|
|
84
|
+
files: ./coverage-unit.xml
|
|
85
|
+
fail_ci_if_error: true
|
|
86
|
+
verbose: true
|
|
87
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
88
|
+
|
|
89
|
+
# Job 2: Run integration tests with coverage and upload to Codecov
|
|
90
|
+
integration-tests-coverage:
|
|
91
|
+
runs-on: ubuntu-latest
|
|
92
|
+
|
|
93
|
+
steps:
|
|
94
|
+
- name: Check-out repository
|
|
95
|
+
uses: actions/checkout@v5
|
|
96
|
+
|
|
97
|
+
- name: Set up pixi
|
|
98
|
+
uses: prefix-dev/setup-pixi@v0.9.0
|
|
99
|
+
with:
|
|
100
|
+
environments: default
|
|
101
|
+
activate-environment: default
|
|
102
|
+
run-install: true
|
|
103
|
+
frozen: true
|
|
104
|
+
cache: false
|
|
105
|
+
post-cleanup: false
|
|
106
|
+
|
|
107
|
+
- name: Install and setup development dependencies
|
|
108
|
+
shell: bash
|
|
109
|
+
run: pixi run dev
|
|
110
|
+
|
|
111
|
+
- name: Run integration tests with coverage
|
|
112
|
+
run:
|
|
113
|
+
pixi run integration-tests-coverage
|
|
114
|
+
--cov-report=xml:coverage-integration.xml
|
|
115
|
+
|
|
116
|
+
- name: Upload integration tests coverage to Codecov
|
|
117
|
+
if: ${{ !cancelled() }}
|
|
118
|
+
uses: codecov/codecov-action@v5
|
|
119
|
+
with:
|
|
120
|
+
name: integration-tests-job
|
|
121
|
+
flags: integration
|
|
122
|
+
files: ./coverage-integration.xml
|
|
123
|
+
fail_ci_if_error: true
|
|
124
|
+
verbose: true
|
|
125
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
126
|
+
|
|
127
|
+
# Job 4: Trigger dashboard build
|
|
128
|
+
dashboard-build-trigger:
|
|
129
|
+
needs: [docstring-coverage, unit-tests-coverage, integration-tests-coverage] # depend on the previous jobs
|
|
130
|
+
|
|
131
|
+
runs-on: ubuntu-latest
|
|
132
|
+
|
|
133
|
+
steps:
|
|
134
|
+
- name: Check-out repository
|
|
135
|
+
uses: actions/checkout@v5
|
|
136
|
+
|
|
137
|
+
- name: Trigger dashboard build
|
|
138
|
+
uses: actions/github-script@v7
|
|
139
|
+
with:
|
|
140
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
141
|
+
script: |
|
|
142
|
+
await github.rest.actions.createWorkflowDispatch({
|
|
143
|
+
owner: context.repo.owner,
|
|
144
|
+
repo: context.repo.repo,
|
|
145
|
+
workflow_id: "dashboard.yaml",
|
|
146
|
+
ref: "${{ env.CI_BRANCH }}"
|
|
147
|
+
});
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
name: Dashboard build and publish
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
workflow_call:
|
|
6
|
+
|
|
7
|
+
# Allow only one concurrent workflow, skipping runs queued between the run
|
|
8
|
+
# in-progress and latest queued. And cancel in-progress runs.
|
|
9
|
+
concurrency:
|
|
10
|
+
group:
|
|
11
|
+
${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
|
12
|
+
cancel-in-progress: true
|
|
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@v5
|
|
29
|
+
with:
|
|
30
|
+
fetch-depth: 0
|
|
31
|
+
|
|
32
|
+
- name: Set up pixi
|
|
33
|
+
uses: prefix-dev/setup-pixi@v0.9.0
|
|
34
|
+
with:
|
|
35
|
+
environments: default
|
|
36
|
+
activate-environment: default
|
|
37
|
+
run-install: true
|
|
38
|
+
frozen: true
|
|
39
|
+
cache: false
|
|
40
|
+
post-cleanup: false
|
|
41
|
+
|
|
42
|
+
- name: Install and setup development dependencies
|
|
43
|
+
shell: bash
|
|
44
|
+
run: |
|
|
45
|
+
pixi run dev
|
|
46
|
+
pixi add --pypi --git https://github.com/enhantica/badgery badgery
|
|
47
|
+
|
|
48
|
+
- name: Run docstring coverage and code complexity/maintainability checks
|
|
49
|
+
run: |
|
|
50
|
+
for BRANCH in ${{ env.DEFAULT_BRANCH }} ${{ env.DEVELOP_BRANCH }} ${{ env.CI_BRANCH }}; do
|
|
51
|
+
echo "=== Processing branch $BRANCH ==="
|
|
52
|
+
if [ -d "../$BRANCH" ]; then
|
|
53
|
+
echo "Branch $BRANCH already processed, skipping"
|
|
54
|
+
continue
|
|
55
|
+
fi
|
|
56
|
+
git worktree add ../$BRANCH origin/$BRANCH
|
|
57
|
+
mkdir -p reports/$BRANCH
|
|
58
|
+
echo "Docstring coverage for branch $BRANCH"
|
|
59
|
+
pixi run interrogate -c pyproject.toml --fail-under=0 ../$BRANCH/src > reports/$BRANCH/coverage-docstring.txt
|
|
60
|
+
echo "Cyclomatic complexity for branch $BRANCH"
|
|
61
|
+
pixi run radon cc -s -j ../$BRANCH/src > reports/$BRANCH/cyclomatic-complexity.json
|
|
62
|
+
echo "Maintainability index for branch $BRANCH"
|
|
63
|
+
pixi run radon mi -j ../$BRANCH/src > reports/$BRANCH/maintainability-index.json
|
|
64
|
+
echo "Raw metrics for branch $BRANCH"
|
|
65
|
+
pixi run radon raw -s -j ../$BRANCH/src > reports/$BRANCH/raw-metrics.json
|
|
66
|
+
done
|
|
67
|
+
|
|
68
|
+
- name: Generate dashboard HTML
|
|
69
|
+
run: >
|
|
70
|
+
pixi run python -m badgery --config .badgery.yaml --repo ${{
|
|
71
|
+
github.repository }} --branch ${{ env.CI_BRANCH }} --output index.html
|
|
72
|
+
|
|
73
|
+
- name: Prepare publish directory
|
|
74
|
+
run: |
|
|
75
|
+
mkdir -p _dashboard_publish/${{ env.REPO_NAME }}/${{ env.CI_BRANCH }}
|
|
76
|
+
cp index.html _dashboard_publish/${{ env.REPO_NAME }}/${{ env.CI_BRANCH }}
|
|
77
|
+
|
|
78
|
+
- name: Publish to main branch of ${{ github.repository }}
|
|
79
|
+
uses: peaceiris/actions-gh-pages@v3
|
|
80
|
+
with:
|
|
81
|
+
external_repository: ${{ env.REPO_OWNER }}/dashboard
|
|
82
|
+
publish_branch: ${{ env.DEFAULT_BRANCH }}
|
|
83
|
+
personal_token: ${{ secrets.GH_API_PERSONAL_ACCESS_TOKEN }}
|
|
84
|
+
publish_dir: ./_dashboard_publish
|
|
85
|
+
keep_files: true
|
|
86
|
+
|
|
87
|
+
- name: Add dashboard link to summary
|
|
88
|
+
run: |
|
|
89
|
+
URL="https://${{ env.REPO_OWNER }}.github.io/dashboard/${{ env.REPO_NAME }}/${{ env.CI_BRANCH }}"
|
|
90
|
+
echo "Dashboard link: [$URL]($URL)" >> $GITHUB_STEP_SUMMARY
|
|
@@ -14,17 +14,17 @@
|
|
|
14
14
|
# and inspecting, as well as links to both the development and production versions of
|
|
15
15
|
# the deployed documentation site.
|
|
16
16
|
|
|
17
|
-
name:
|
|
17
|
+
name: Docs build and deployment
|
|
18
18
|
|
|
19
19
|
on:
|
|
20
20
|
# Trigger the workflow on pull request
|
|
21
21
|
pull_request:
|
|
22
22
|
# Selected branches
|
|
23
|
-
branches: [master, develop]
|
|
23
|
+
branches: [master, main, develop]
|
|
24
24
|
# Trigger the workflow on push
|
|
25
25
|
push:
|
|
26
26
|
# Selected branches
|
|
27
|
-
branches: [master, develop]
|
|
27
|
+
branches: [master, main, develop]
|
|
28
28
|
# Runs on creating a new tag starting with 'v', e.g. 'v1.0.3'
|
|
29
29
|
tags: ['v*']
|
|
30
30
|
# Allows you to run this workflow manually from the Actions tab
|
|
@@ -86,14 +86,17 @@ jobs:
|
|
|
86
86
|
- name: Set up pixi
|
|
87
87
|
uses: prefix-dev/setup-pixi@v0.9.0
|
|
88
88
|
with:
|
|
89
|
-
environments:
|
|
90
|
-
|
|
91
|
-
activate-environment: py313-docs
|
|
89
|
+
environments: default
|
|
90
|
+
activate-environment: default
|
|
92
91
|
run-install: true
|
|
93
92
|
frozen: true
|
|
94
93
|
cache: false
|
|
95
94
|
post-cleanup: false
|
|
96
95
|
|
|
96
|
+
- name: Install and setup development dependencies
|
|
97
|
+
shell: bash
|
|
98
|
+
run: pixi run dev
|
|
99
|
+
|
|
97
100
|
- name: Clone easyscience/assets-docs and easyscience/assets-branding
|
|
98
101
|
run: |
|
|
99
102
|
cd ..
|
|
@@ -134,7 +137,14 @@ jobs:
|
|
|
134
137
|
# Input: docs/ directory containing the Markdown files
|
|
135
138
|
# Output: site/ directory containing the generated HTML files
|
|
136
139
|
- name: Build site with MkDocs
|
|
137
|
-
run:
|
|
140
|
+
run: |
|
|
141
|
+
if [[ "${CI_BRANCH}" == "develop" || "${CI_BRANCH}" == "master" || "${CI_BRANCH}" == "main" ]]; then
|
|
142
|
+
echo "📘 Building production docs for ${CI_BRANCH}"
|
|
143
|
+
pixi run docs-build
|
|
144
|
+
else
|
|
145
|
+
echo "📗 Building local docs for ${CI_BRANCH}"
|
|
146
|
+
pixi run docs-local
|
|
147
|
+
fi
|
|
138
148
|
|
|
139
149
|
# Set up the Pages action to configure the static files to be deployed
|
|
140
150
|
# NOTE: The repository must have GitHub Pages enabled and configured to build using GitHub Actions
|
|
@@ -226,7 +236,7 @@ jobs:
|
|
|
226
236
|
# which triggers deployment to the custom domain via webhook.
|
|
227
237
|
#
|
|
228
238
|
# To be able to push to the gh_pages branch, the personal GitHub API access
|
|
229
|
-
# token
|
|
239
|
+
# token GH_API_PERSONAL_ACCESS_TOKEN must be set for this repository via
|
|
230
240
|
# https://github.com/easyscience/diffraction-lib/settings/secrets/actions
|
|
231
241
|
# Then the gh_pages branch is used to deploy the site to the custom domain.
|
|
232
242
|
# Deploying is done with a webhook added via:
|
|
@@ -234,7 +244,7 @@ jobs:
|
|
|
234
244
|
- name: PROD deployment to gh_pages for custom domain
|
|
235
245
|
uses: s0/git-publish-subdir-action@develop
|
|
236
246
|
env:
|
|
237
|
-
GITHUB_TOKEN: ${{ secrets.
|
|
247
|
+
GITHUB_TOKEN: ${{ secrets.GH_API_PERSONAL_ACCESS_TOKEN }}
|
|
238
248
|
REPO: self
|
|
239
249
|
BRANCH: gh_pages
|
|
240
250
|
FOLDER: site
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Verifies if a pull request has at least one label from a set of valid
|
|
2
|
+
# labels before it can be merged.
|
|
3
|
+
|
|
4
|
+
name: PR label checks
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
pull_request_target:
|
|
8
|
+
types: [opened, labeled, unlabeled, synchronize]
|
|
9
|
+
|
|
10
|
+
permissions:
|
|
11
|
+
pull-requests: read
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
require-label:
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
steps:
|
|
17
|
+
- name: Validate required labels
|
|
18
|
+
run: |
|
|
19
|
+
PR_LABELS=$(echo '${{ toJson(github.event.pull_request.labels.*.name) }}' | jq -r '.[]')
|
|
20
|
+
echo "Current PR labels: $PR_LABELS"
|
|
21
|
+
VALID_LABELS=(
|
|
22
|
+
"[maintainer] auto-pull-request"
|
|
23
|
+
"[scope] bug"
|
|
24
|
+
"[scope] documentation"
|
|
25
|
+
"[scope] enhancement"
|
|
26
|
+
"[scope] maintenance"
|
|
27
|
+
"[scope] significant"
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
found=false
|
|
31
|
+
for label in "${VALID_LABELS[@]}"; do
|
|
32
|
+
if echo "$PR_LABELS" | grep -Fxq "$label"; then
|
|
33
|
+
echo "✅ Found valid label: $label"
|
|
34
|
+
found=true
|
|
35
|
+
break
|
|
36
|
+
fi
|
|
37
|
+
done
|
|
38
|
+
|
|
39
|
+
if [ "$found" = false ]; then
|
|
40
|
+
echo "ERROR: PR must have at least one of the following labels:"
|
|
41
|
+
for label in "${VALID_LABELS[@]}"; do
|
|
42
|
+
echo " - $label"
|
|
43
|
+
done
|
|
44
|
+
exit 1
|
|
45
|
+
fi
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Builds a Python package and publish it to PyPI when a new tag is
|
|
2
2
|
# created.
|
|
3
3
|
|
|
4
|
-
name:
|
|
4
|
+
name: PyPI publishing
|
|
5
5
|
|
|
6
6
|
on:
|
|
7
7
|
# Runs on creating a new tag starting with 'v', e.g. 'v1.0.3'
|
|
@@ -20,19 +20,22 @@ jobs:
|
|
|
20
20
|
with:
|
|
21
21
|
fetch-depth: '0' # full history with tags to get the version number by versioningit
|
|
22
22
|
|
|
23
|
-
- name: Set up
|
|
24
|
-
uses:
|
|
23
|
+
- name: Set up pixi
|
|
24
|
+
uses: prefix-dev/setup-pixi@v0.9.0
|
|
25
25
|
with:
|
|
26
|
-
|
|
26
|
+
environments: default
|
|
27
|
+
activate-environment: default
|
|
28
|
+
run-install: true
|
|
29
|
+
frozen: true
|
|
30
|
+
cache: false
|
|
31
|
+
post-cleanup: false
|
|
27
32
|
|
|
28
|
-
- name:
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
- name: Install build tool
|
|
32
|
-
run: pip install --upgrade build
|
|
33
|
+
- name: Install and setup development dependencies
|
|
34
|
+
shell: bash
|
|
35
|
+
run: pixi run dev
|
|
33
36
|
|
|
34
37
|
- name: Create Python package
|
|
35
|
-
run: python -m build
|
|
38
|
+
run: pixi run python -m build
|
|
36
39
|
|
|
37
40
|
- name: Publish distribution 📦 to PyPI
|
|
38
41
|
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
name: PyPI package tests
|
|
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
|
+
# Allow only one concurrent workflow, skipping runs queued between the run
|
|
11
|
+
# in-progress and latest queued. And cancel in-progress runs.
|
|
12
|
+
concurrency:
|
|
13
|
+
group:
|
|
14
|
+
${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
|
15
|
+
cancel-in-progress: true
|
|
16
|
+
|
|
17
|
+
# Set the environment variables to be used in all jobs defined in this workflow
|
|
18
|
+
env:
|
|
19
|
+
CI_BRANCH: ${{ github.head_ref || github.ref_name }}
|
|
20
|
+
DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
|
|
21
|
+
|
|
22
|
+
jobs:
|
|
23
|
+
# Job 1: Test installation from PyPI on multiple OS
|
|
24
|
+
pypi-package-tests:
|
|
25
|
+
strategy:
|
|
26
|
+
matrix:
|
|
27
|
+
os: [ubuntu-latest, windows-latest, macos-latest]
|
|
28
|
+
|
|
29
|
+
runs-on: ${{ matrix.os }}
|
|
30
|
+
|
|
31
|
+
steps:
|
|
32
|
+
- name: Set up pixi
|
|
33
|
+
uses: prefix-dev/setup-pixi@v0.9.0
|
|
34
|
+
with:
|
|
35
|
+
run-install: false
|
|
36
|
+
cache: false
|
|
37
|
+
post-cleanup: false
|
|
38
|
+
|
|
39
|
+
- name:
|
|
40
|
+
Download the pixi configuration file from the ${{ env.CI_BRANCH}}
|
|
41
|
+
branch
|
|
42
|
+
shell: bash
|
|
43
|
+
run: |
|
|
44
|
+
curl -LO https://raw.githubusercontent.com/easyscience/diffraction-lib/${CI_BRANCH}/pixi.toml
|
|
45
|
+
|
|
46
|
+
- name: Download the tests from the ${{ env.DEFAULT_BRANCH }} branch
|
|
47
|
+
shell: bash
|
|
48
|
+
run: |
|
|
49
|
+
curl -LO https://github.com/easyscience/diffraction-lib/archive/refs/heads/${DEFAULT_BRANCH}.zip
|
|
50
|
+
unzip ${DEFAULT_BRANCH}.zip -d .
|
|
51
|
+
mkdir -p tests
|
|
52
|
+
cp -r diffraction-lib-${DEFAULT_BRANCH}/tests/* tests/
|
|
53
|
+
rm -rf ${DEFAULT_BRANCH}.zip diffraction-lib-${DEFAULT_BRANCH}
|
|
54
|
+
|
|
55
|
+
- name: Create the environment and install dependencies
|
|
56
|
+
run: pixi install
|
|
57
|
+
|
|
58
|
+
- name: Install package from PyPI with all extras
|
|
59
|
+
run: pixi add --pypi "easydiffraction[all]"
|
|
60
|
+
|
|
61
|
+
- name: Run unit tests to verify the installation
|
|
62
|
+
run: pixi run unit-tests
|
|
63
|
+
|
|
64
|
+
- name: Run integration tests to verify the installation
|
|
65
|
+
run: pixi run integration-tests
|
|
66
|
+
|
|
67
|
+
# Github token to avoid hitting the unauthenticated API rate limit
|
|
68
|
+
- name: List and fetch the EasyDiffraction tutorials
|
|
69
|
+
env:
|
|
70
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
71
|
+
run: |
|
|
72
|
+
pixi run easydiffraction --version
|
|
73
|
+
pixi run easydiffraction list-tutorials
|
|
74
|
+
pixi run easydiffraction fetch-tutorials
|
|
75
|
+
|
|
76
|
+
- name: Test tutorials as notebooks
|
|
77
|
+
run: pixi run notebook-tests
|
|
78
|
+
|
|
79
|
+
# Job 2: Trigger dashboard build
|
|
80
|
+
dashboard-build-trigger:
|
|
81
|
+
needs: pypi-package-tests
|
|
82
|
+
|
|
83
|
+
runs-on: ubuntu-latest
|
|
84
|
+
|
|
85
|
+
steps:
|
|
86
|
+
- name: Check-out repository
|
|
87
|
+
uses: actions/checkout@v5
|
|
88
|
+
|
|
89
|
+
- name: Trigger dashboard build
|
|
90
|
+
uses: actions/github-script@v7
|
|
91
|
+
with:
|
|
92
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
93
|
+
script: |
|
|
94
|
+
await github.rest.actions.createWorkflowDispatch({
|
|
95
|
+
owner: context.repo.owner,
|
|
96
|
+
repo: context.repo.repo,
|
|
97
|
+
workflow_id: "dashboard.yaml",
|
|
98
|
+
ref: "${{ env.CI_BRANCH }}"
|
|
99
|
+
});
|