easydiffraction 0.10.2__tar.gz → 0.11.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.10.2 → easydiffraction-0.11.0}/.badgery.yaml +5 -7
- easydiffraction-0.11.0/.copier-answers.yml +27 -0
- easydiffraction-0.11.0/.github/actions/download-artifact/action.yml +50 -0
- easydiffraction-0.11.0/.github/actions/github-script/action.yml +19 -0
- easydiffraction-0.11.0/.github/actions/setup-easyscience-bot/action.yml +40 -0
- easydiffraction-0.11.0/.github/actions/setup-pixi/action.yml +44 -0
- easydiffraction-0.11.0/.github/actions/upload-artifact/action.yml +49 -0
- easydiffraction-0.11.0/.github/actions/upload-codecov/action.yml +42 -0
- easydiffraction-0.11.0/.github/configs/pages-deployment.json +6 -0
- easydiffraction-0.11.0/.github/configs/rulesets-develop.json +37 -0
- easydiffraction-0.11.0/.github/configs/rulesets-gh-pages.json +19 -0
- easydiffraction-0.11.0/.github/configs/rulesets-master.json +30 -0
- easydiffraction-0.11.0/.github/copilot-instructions.md +159 -0
- easydiffraction-0.11.0/.github/scripts/backmerge-conflict-issue.js +69 -0
- easydiffraction-0.11.0/.github/workflows/backmerge.yml +109 -0
- easydiffraction-0.10.2/.github/workflows/cleanup.yaml → easydiffraction-0.11.0/.github/workflows/cleanup.yml +11 -7
- easydiffraction-0.10.2/.github/workflows/coverage.yaml → easydiffraction-0.11.0/.github/workflows/coverage.yml +14 -67
- easydiffraction-0.10.2/.github/workflows/dashboard.yaml → easydiffraction-0.11.0/.github/workflows/dashboard.yml +43 -42
- easydiffraction-0.10.2/.github/workflows/docs.yaml → easydiffraction-0.11.0/.github/workflows/docs.yml +50 -81
- easydiffraction-0.11.0/.github/workflows/issues-labels.yml +42 -0
- easydiffraction-0.11.0/.github/workflows/lint-format.yml +124 -0
- easydiffraction-0.10.2/.github/workflows/labels.yaml → easydiffraction-0.11.0/.github/workflows/pr-labels.yml +15 -4
- easydiffraction-0.11.0/.github/workflows/pypi-publish.yml +46 -0
- easydiffraction-0.11.0/.github/workflows/pypi-test.yml +80 -0
- easydiffraction-0.10.2/.github/workflows/release-notes.yaml → easydiffraction-0.11.0/.github/workflows/release-notes.yml +9 -14
- easydiffraction-0.11.0/.github/workflows/release-pr.yml +55 -0
- easydiffraction-0.11.0/.github/workflows/security.yml +93 -0
- easydiffraction-0.10.2/.github/workflows/test-trigger.yaml → easydiffraction-0.11.0/.github/workflows/test-trigger.yml +13 -3
- easydiffraction-0.11.0/.github/workflows/test.yml +279 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/.github/workflows/tutorial-tests-colab.yaml +5 -6
- easydiffraction-0.10.2/.github/workflows/tutorial-tests-trigger.yaml → easydiffraction-0.11.0/.github/workflows/tutorial-tests-trigger.yml +13 -3
- easydiffraction-0.10.2/.github/workflows/tutorial-tests.yaml → easydiffraction-0.11.0/.github/workflows/tutorial-tests.yml +12 -37
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/.gitignore +15 -17
- easydiffraction-0.11.0/.pre-commit-config.yaml +61 -0
- easydiffraction-0.11.0/.prettierignore +32 -0
- easydiffraction-0.11.0/CONTRIBUTING.md +446 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/LICENSE +1 -1
- easydiffraction-0.11.0/PKG-INFO +135 -0
- easydiffraction-0.11.0/README.md +53 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/codecov.yml +0 -5
- easydiffraction-0.11.0/docs/architecture/architecture.md +1178 -0
- easydiffraction-0.11.0/docs/architecture/issues_closed.md +67 -0
- easydiffraction-0.11.0/docs/architecture/issues_open.md +359 -0
- easydiffraction-0.11.0/docs/architecture/package-structure-full.md +302 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/docs/architecture/package-structure-short.md +71 -60
- easydiffraction-0.11.0/docs/docs/api-reference/datablocks/experiment.md +1 -0
- easydiffraction-0.11.0/docs/docs/api-reference/datablocks/structure.md +1 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/api-reference/index.md +12 -10
- easydiffraction-0.11.0/docs/docs/assets/images/favicon.png +0 -0
- easydiffraction-0.11.0/docs/docs/assets/images/logo_dark.svg +41 -0
- easydiffraction-0.11.0/docs/docs/assets/images/logo_light.svg +41 -0
- easydiffraction-0.11.0/docs/docs/assets/javascripts/extra.js +27 -0
- easydiffraction-0.11.0/docs/docs/assets/javascripts/mathjax.js +33 -0
- easydiffraction-0.11.0/docs/docs/assets/stylesheets/extra.css +359 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/index.md +14 -13
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/installation-and-setup/index.md +44 -38
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/introduction/index.md +17 -15
- easydiffraction-0.11.0/docs/docs/tutorials/ed-1.ipynb +203 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs/docs}/tutorials/ed-1.py +6 -6
- easydiffraction-0.11.0/docs/docs/tutorials/ed-10.ipynb +222 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs/docs}/tutorials/ed-10.py +10 -11
- easydiffraction-0.11.0/docs/docs/tutorials/ed-11.ipynb +254 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs/docs}/tutorials/ed-11.py +11 -12
- easydiffraction-0.11.0/docs/docs/tutorials/ed-12.ipynb +303 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs/docs}/tutorials/ed-12.py +12 -13
- easydiffraction-0.11.0/docs/docs/tutorials/ed-13.ipynb +2923 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs/docs}/tutorials/ed-13.py +110 -110
- easydiffraction-0.11.0/docs/docs/tutorials/ed-14.ipynb +319 -0
- easydiffraction-0.11.0/docs/docs/tutorials/ed-14.py +109 -0
- easydiffraction-0.11.0/docs/docs/tutorials/ed-15.ipynb +296 -0
- easydiffraction-0.11.0/docs/docs/tutorials/ed-15.py +100 -0
- easydiffraction-0.11.0/docs/docs/tutorials/ed-16.ipynb +623 -0
- easydiffraction-0.11.0/docs/docs/tutorials/ed-16.py +259 -0
- easydiffraction-0.11.0/docs/docs/tutorials/ed-17.ipynb +658 -0
- easydiffraction-0.11.0/docs/docs/tutorials/ed-17.py +327 -0
- easydiffraction-0.11.0/docs/docs/tutorials/ed-2.ipynb +344 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs/docs}/tutorials/ed-2.py +27 -27
- easydiffraction-0.11.0/docs/docs/tutorials/ed-3.ipynb +1804 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs/docs}/tutorials/ed-3.py +64 -63
- easydiffraction-0.11.0/docs/docs/tutorials/ed-4.ipynb +705 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs/docs}/tutorials/ed-4.py +34 -40
- easydiffraction-0.11.0/docs/docs/tutorials/ed-5.ipynb +637 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs/docs}/tutorials/ed-5.py +66 -73
- easydiffraction-0.11.0/docs/docs/tutorials/ed-6.ipynb +849 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs/docs}/tutorials/ed-6.py +43 -49
- easydiffraction-0.11.0/docs/docs/tutorials/ed-7.ipynb +741 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs/docs}/tutorials/ed-7.py +22 -26
- easydiffraction-0.11.0/docs/docs/tutorials/ed-8.ipynb +747 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs/docs}/tutorials/ed-8.py +38 -44
- easydiffraction-0.11.0/docs/docs/tutorials/ed-9.ipynb +704 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs/docs}/tutorials/ed-9.py +50 -56
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs/docs}/tutorials/index.json +31 -3
- easydiffraction-0.11.0/docs/docs/tutorials/index.md +98 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/user-guide/analysis-workflow/analysis.md +139 -142
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/user-guide/analysis-workflow/experiment.md +105 -89
- easydiffraction-0.11.0/docs/docs/user-guide/analysis-workflow/index.md +37 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/user-guide/analysis-workflow/model.md +59 -55
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/user-guide/analysis-workflow/project.md +41 -39
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/user-guide/analysis-workflow/summary.md +16 -14
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/user-guide/concept.md +39 -34
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/user-guide/data-format.md +47 -43
- easydiffraction-0.11.0/docs/docs/user-guide/first-steps.md +190 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/user-guide/glossary.md +14 -10
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/user-guide/index.md +13 -12
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/user-guide/parameters/_diffrn_radiation.md +4 -4
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/user-guide/parameters/_diffrn_radiation_wavelength.md +2 -2
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/user-guide/parameters/_pd_calib.md +2 -2
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/user-guide/parameters/atom_site.md +15 -14
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/user-guide/parameters/background.md +10 -9
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/user-guide/parameters/cell.md +2 -2
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/user-guide/parameters/expt_type.md +2 -2
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/user-guide/parameters/instrument.md +13 -11
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/user-guide/parameters/linked_phases.md +4 -4
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/user-guide/parameters/pd_meas.md +2 -2
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/user-guide/parameters/peak.md +2 -2
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/user-guide/parameters/space_group.md +5 -5
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/user-guide/parameters.md +64 -53
- easydiffraction-0.11.0/docs/includes/abbreviations.md +15 -0
- easydiffraction-0.11.0/docs/mkdocs.yml +229 -0
- easydiffraction-0.11.0/docs/overrides/.icons/app.svg +4 -0
- easydiffraction-0.11.0/docs/overrides/.icons/easydiffraction.svg +3 -0
- easydiffraction-0.11.0/docs/overrides/.icons/easyscience.svg +20 -0
- easydiffraction-0.11.0/docs/overrides/.icons/google-colab.svg +7 -0
- easydiffraction-0.11.0/docs/overrides/main.html +39 -0
- easydiffraction-0.11.0/docs/overrides/partials/logo.html +15 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/pixi.lock +5290 -3518
- easydiffraction-0.11.0/pixi.toml +274 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/prettierrc.toml +15 -4
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/pycrysfml.md +2 -1
- easydiffraction-0.11.0/pyproject.toml +391 -0
- easydiffraction-0.11.0/src/easydiffraction/__init__.py +17 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/src/easydiffraction/__main__.py +5 -5
- easydiffraction-0.11.0/src/easydiffraction/analysis/__init__.py +2 -0
- easydiffraction-0.11.0/src/easydiffraction/analysis/analysis.py +803 -0
- easydiffraction-0.11.0/src/easydiffraction/analysis/calculators/__init__.py +6 -0
- easydiffraction-0.11.0/src/easydiffraction/analysis/calculators/base.py +64 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/src/easydiffraction/analysis/calculators/crysfml.py +110 -70
- easydiffraction-0.11.0/src/easydiffraction/analysis/calculators/cryspy.py +615 -0
- easydiffraction-0.11.0/src/easydiffraction/analysis/calculators/factory.py +40 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/src/easydiffraction/analysis/calculators/pdffit.py +60 -15
- easydiffraction-0.11.0/src/easydiffraction/analysis/categories/__init__.py +2 -0
- easydiffraction-0.11.0/src/easydiffraction/analysis/categories/aliases/__init__.py +5 -0
- easydiffraction-0.11.0/src/easydiffraction/analysis/categories/aliases/default.py +101 -0
- easydiffraction-0.11.0/src/easydiffraction/analysis/categories/aliases/factory.py +15 -0
- easydiffraction-0.11.0/src/easydiffraction/analysis/categories/constraints/__init__.py +5 -0
- easydiffraction-0.11.0/src/easydiffraction/analysis/categories/constraints/default.py +124 -0
- easydiffraction-0.11.0/src/easydiffraction/analysis/categories/constraints/factory.py +15 -0
- easydiffraction-0.11.0/src/easydiffraction/analysis/categories/fit_mode/__init__.py +6 -0
- easydiffraction-0.11.0/src/easydiffraction/analysis/categories/fit_mode/enums.py +26 -0
- easydiffraction-0.11.0/src/easydiffraction/analysis/categories/fit_mode/factory.py +15 -0
- easydiffraction-0.11.0/src/easydiffraction/analysis/categories/fit_mode/fit_mode.py +64 -0
- easydiffraction-0.11.0/src/easydiffraction/analysis/categories/joint_fit_experiments/__init__.py +5 -0
- easydiffraction-0.11.0/src/easydiffraction/analysis/categories/joint_fit_experiments/default.py +100 -0
- easydiffraction-0.11.0/src/easydiffraction/analysis/categories/joint_fit_experiments/factory.py +15 -0
- easydiffraction-0.11.0/src/easydiffraction/analysis/fit_helpers/__init__.py +2 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/src/easydiffraction/analysis/fit_helpers/metrics.py +94 -59
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/src/easydiffraction/analysis/fit_helpers/reporting.py +53 -34
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/src/easydiffraction/analysis/fit_helpers/tracking.py +61 -28
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/src/easydiffraction/analysis/fitting.py +106 -62
- easydiffraction-0.11.0/src/easydiffraction/analysis/minimizers/__init__.py +5 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/src/easydiffraction/analysis/minimizers/base.py +88 -60
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/src/easydiffraction/analysis/minimizers/dfols.py +36 -20
- easydiffraction-0.11.0/src/easydiffraction/analysis/minimizers/factory.py +15 -0
- easydiffraction-0.11.0/src/easydiffraction/analysis/minimizers/lmfit.py +160 -0
- easydiffraction-0.11.0/src/easydiffraction/core/__init__.py +2 -0
- easydiffraction-0.11.0/src/easydiffraction/core/category.py +252 -0
- easydiffraction-0.11.0/src/easydiffraction/core/collection.py +174 -0
- easydiffraction-0.11.0/src/easydiffraction/core/datablock.py +181 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/src/easydiffraction/core/diagnostic.py +45 -45
- easydiffraction-0.11.0/src/easydiffraction/core/factory.py +271 -0
- easydiffraction-0.11.0/src/easydiffraction/core/guard.py +227 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/src/easydiffraction/core/identity.py +11 -10
- easydiffraction-0.11.0/src/easydiffraction/core/metadata.py +119 -0
- easydiffraction-0.10.2/src/easydiffraction/core/singletons.py → easydiffraction-0.11.0/src/easydiffraction/core/singleton.py +39 -32
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/src/easydiffraction/core/validation.py +104 -109
- easydiffraction-0.10.2/src/easydiffraction/core/parameters.py → easydiffraction-0.11.0/src/easydiffraction/core/variable.py +162 -100
- easydiffraction-0.11.0/src/easydiffraction/crystallography/__init__.py +2 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/src/easydiffraction/crystallography/crystallography.py +31 -19
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/src/easydiffraction/crystallography/space_groups.py +7 -6
- easydiffraction-0.11.0/src/easydiffraction/datablocks/__init__.py +2 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/__init__.py +2 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/__init__.py +2 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/background/__init__.py +9 -0
- {easydiffraction-0.10.2/src/easydiffraction/experiments → easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment}/categories/background/base.py +3 -2
- {easydiffraction-0.10.2/src/easydiffraction/experiments → easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment}/categories/background/chebyshev.py +77 -52
- {easydiffraction-0.10.2/src/easydiffraction/experiments → easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment}/categories/background/enums.py +2 -2
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/background/factory.py +14 -0
- {easydiffraction-0.10.2/src/easydiffraction/experiments → easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment}/categories/background/line_segment.py +69 -49
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/data/__init__.py +7 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/data/bragg_pd.py +625 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/data/bragg_sc.py +434 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/data/factory.py +33 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/data/total_pd.py +376 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/diffrn/__init__.py +4 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/diffrn/default.py +136 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/diffrn/factory.py +15 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/excluded_regions/__init__.py +9 -0
- easydiffraction-0.10.2/src/easydiffraction/experiments/categories/excluded_regions.py → easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/excluded_regions/default.py +62 -47
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/excluded_regions/factory.py +17 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/experiment_type/__init__.py +4 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/experiment_type/default.py +142 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/experiment_type/factory.py +15 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/extinction/__init__.py +4 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/extinction/factory.py +15 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/extinction/shelx.py +94 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/instrument/__init__.py +7 -0
- {easydiffraction-0.10.2/src/easydiffraction/experiments → easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment}/categories/instrument/base.py +5 -3
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/instrument/cwl.py +127 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/instrument/factory.py +30 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/instrument/tof.py +179 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/linked_crystal/__init__.py +4 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/linked_crystal/default.py +89 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/linked_crystal/factory.py +15 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/linked_phases/__init__.py +5 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/linked_phases/default.py +99 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/linked_phases/factory.py +15 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/peak/__init__.py +10 -0
- {easydiffraction-0.10.2/src/easydiffraction/experiments → easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment}/categories/peak/base.py +1 -1
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/peak/cwl.py +88 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/peak/cwl_mixins.py +314 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/peak/factory.py +26 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/peak/tof.py +87 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/peak/tof_mixins.py +276 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/peak/total.py +36 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/categories/peak/total_mixins.py +170 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/collection.py +157 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/item/__init__.py +9 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/item/base.py +768 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/item/bragg_pd.py +219 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/item/bragg_sc.py +162 -0
- {easydiffraction-0.10.2/src/easydiffraction/experiments/experiment → easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/item}/enums.py +104 -1
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/item/factory.py +277 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/experiment/item/total_pd.py +92 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/structure/__init__.py +2 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/structure/categories/__init__.py +2 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/structure/categories/atom_sites/__init__.py +5 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/structure/categories/atom_sites/default.py +380 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/structure/categories/atom_sites/factory.py +15 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/structure/categories/cell/__init__.py +4 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/structure/categories/cell/default.py +235 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/structure/categories/cell/factory.py +15 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/structure/categories/space_group/__init__.py +4 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/structure/categories/space_group/default.py +163 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/structure/categories/space_group/factory.py +15 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/structure/collection.py +92 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/structure/item/__init__.py +2 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/structure/item/base.py +255 -0
- easydiffraction-0.11.0/src/easydiffraction/datablocks/structure/item/factory.py +137 -0
- easydiffraction-0.11.0/src/easydiffraction/display/__init__.py +18 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/src/easydiffraction/display/base.py +40 -17
- easydiffraction-0.11.0/src/easydiffraction/display/plotters/__init__.py +11 -0
- easydiffraction-0.11.0/src/easydiffraction/display/plotters/ascii.py +206 -0
- easydiffraction-0.11.0/src/easydiffraction/display/plotters/base.py +261 -0
- easydiffraction-0.11.0/src/easydiffraction/display/plotters/plotly.py +413 -0
- easydiffraction-0.11.0/src/easydiffraction/display/plotting.py +688 -0
- easydiffraction-0.11.0/src/easydiffraction/display/tablers/__init__.py +11 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/src/easydiffraction/display/tablers/base.py +50 -34
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/src/easydiffraction/display/tablers/pandas.py +72 -43
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/src/easydiffraction/display/tablers/rich.py +65 -43
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/src/easydiffraction/display/tables.py +34 -18
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/src/easydiffraction/display/utils.py +2 -4
- easydiffraction-0.11.0/src/easydiffraction/io/__init__.py +7 -0
- easydiffraction-0.11.0/src/easydiffraction/io/ascii.py +182 -0
- easydiffraction-0.11.0/src/easydiffraction/io/cif/__init__.py +2 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/src/easydiffraction/io/cif/handler.py +4 -3
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/src/easydiffraction/io/cif/parse.py +1 -1
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/src/easydiffraction/io/cif/serialize.py +65 -29
- easydiffraction-0.11.0/src/easydiffraction/project/__init__.py +2 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/src/easydiffraction/project/project.py +163 -68
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/src/easydiffraction/project/project_info.py +39 -9
- easydiffraction-0.11.0/src/easydiffraction/summary/__init__.py +2 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/src/easydiffraction/summary/summary.py +18 -20
- easydiffraction-0.11.0/src/easydiffraction/utils/__init__.py +5 -0
- easydiffraction-0.11.0/src/easydiffraction/utils/_vendored/__init__.py +22 -0
- easydiffraction-0.11.0/src/easydiffraction/utils/_vendored/jupyter_dark_detect/__init__.py +10 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/src/easydiffraction/utils/_vendored/jupyter_dark_detect/detector.py +5 -8
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/src/easydiffraction/utils/_vendored/theme_detect.py +24 -20
- easydiffraction-0.11.0/src/easydiffraction/utils/enums.py +30 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/src/easydiffraction/utils/environment.py +51 -20
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/src/easydiffraction/utils/logging.py +202 -72
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/src/easydiffraction/utils/utils.py +258 -208
- easydiffraction-0.11.0/tests/integration/fitting/test_multi.py +236 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/integration/fitting/test_pair-distribution-function.py +36 -39
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/integration/fitting/test_powder-diffraction_constant-wavelength.py +74 -69
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/integration/fitting/test_powder-diffraction_joint-fit.py +38 -43
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/integration/fitting/test_powder-diffraction_time-of-flight.py +27 -30
- easydiffraction-0.11.0/tests/integration/fitting/test_single-crystal-diffraction.py +90 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/integration/scipp-analysis/dream/conftest.py +2 -1
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/integration/scipp-analysis/dream/test_analyze_reduced_data.py +20 -19
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/integration/scipp-analysis/dream/test_package_import.py +2 -1
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/integration/scipp-analysis/dream/test_read_reduced_data.py +2 -1
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/integration/scipp-analysis/dream/test_validate_meta_data.py +2 -1
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/integration/scipp-analysis/dream/test_validate_physical_data.py +2 -1
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/analysis/calculators/test_base.py +2 -1
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/analysis/calculators/test_crysfml.py +2 -2
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/analysis/calculators/test_cryspy.py +4 -3
- easydiffraction-0.11.0/tests/unit/easydiffraction/analysis/calculators/test_factory.py +22 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/analysis/calculators/test_pdffit.py +4 -4
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/analysis/categories/test_aliases.py +5 -3
- easydiffraction-0.11.0/tests/unit/easydiffraction/analysis/categories/test_constraints.py +16 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/analysis/categories/test_joint_fit_experiments.py +5 -3
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/analysis/fit_helpers/test_metrics.py +6 -6
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/analysis/fit_helpers/test_reporting.py +2 -1
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/analysis/fit_helpers/test_tracking.py +1 -1
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/analysis/minimizers/test_base.py +5 -5
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/analysis/minimizers/test_dfols.py +13 -2
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/analysis/minimizers/test_factory.py +15 -13
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/analysis/minimizers/test_lmfit.py +4 -1
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/analysis/test_analysis.py +72 -43
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/analysis/test_analysis_access_params.py +8 -7
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/analysis/test_analysis_show_empty.py +3 -2
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/analysis/test_fitting.py +6 -5
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/core/test_category.py +42 -10
- easydiffraction-0.11.0/tests/unit/easydiffraction/core/test_collection.py +165 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/core/test_datablock.py +70 -7
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/core/test_diagnostic.py +1 -1
- easydiffraction-0.11.0/tests/unit/easydiffraction/core/test_factory.py +2 -0
- easydiffraction-0.11.0/tests/unit/easydiffraction/core/test_guard.py +101 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/core/test_identity.py +2 -1
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/core/test_parameters.py +15 -18
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/core/test_singletons.py +2 -2
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/core/test_validation.py +7 -6
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/crystallography/test_crystallography.py +2 -1
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/crystallography/test_space_groups.py +2 -1
- {easydiffraction-0.10.2/tests/unit/easydiffraction/experiments → easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment}/categories/background/test_base.py +18 -10
- {easydiffraction-0.10.2/tests/unit/easydiffraction/experiments → easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment}/categories/background/test_chebyshev.py +5 -5
- easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment/categories/background/test_enums.py +17 -0
- easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment/categories/background/test_factory.py +22 -0
- {easydiffraction-0.10.2/tests/unit/easydiffraction/experiments → easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment}/categories/background/test_line_segment.py +5 -5
- easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment/categories/data/test_bragg_pd.py +144 -0
- easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment/categories/data/test_bragg_sc.py +92 -0
- easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment/categories/data/test_factory.py +85 -0
- easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment/categories/data/test_total_pd.py +91 -0
- {easydiffraction-0.10.2/tests/unit/easydiffraction/experiments → easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment}/categories/instrument/test_base.py +3 -2
- {easydiffraction-0.10.2/tests/unit/easydiffraction/experiments → easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment}/categories/instrument/test_cwl.py +3 -3
- easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment/categories/instrument/test_factory.py +37 -0
- {easydiffraction-0.10.2/tests/unit/easydiffraction/experiments → easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment}/categories/instrument/test_tof.py +3 -3
- {easydiffraction-0.10.2/tests/unit/easydiffraction/experiments → easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment}/categories/peak/test_base.py +2 -2
- {easydiffraction-0.10.2/tests/unit/easydiffraction/experiments → easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment}/categories/peak/test_cwl.py +5 -4
- {easydiffraction-0.10.2/tests/unit/easydiffraction/experiments → easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment}/categories/peak/test_cwl_mixins.py +5 -5
- easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment/categories/peak/test_factory.py +54 -0
- {easydiffraction-0.10.2/tests/unit/easydiffraction/experiments → easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment}/categories/peak/test_tof.py +4 -4
- {easydiffraction-0.10.2/tests/unit/easydiffraction/experiments → easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment}/categories/peak/test_tof_mixins.py +11 -7
- {easydiffraction-0.10.2/tests/unit/easydiffraction/experiments → easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment}/categories/peak/test_total.py +2 -2
- {easydiffraction-0.10.2/tests/unit/easydiffraction/experiments → easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment}/categories/peak/test_total_mixins.py +2 -2
- {easydiffraction-0.10.2/tests/unit/easydiffraction/experiments → easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment}/categories/test_excluded_regions.py +6 -6
- easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment/categories/test_experiment_type.py +37 -0
- easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment/categories/test_extinction.py +76 -0
- easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment/categories/test_linked_crystal.py +88 -0
- easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment/categories/test_linked_phases.py +19 -0
- easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment/item/test_base.py +38 -0
- {easydiffraction-0.10.2/tests/unit/easydiffraction/experiments/experiment → easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment/item}/test_bragg_pd.py +20 -20
- easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment/item/test_bragg_sc.py +36 -0
- {easydiffraction-0.10.2/tests/unit/easydiffraction/experiments/experiment → easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment/item}/test_enums.py +5 -4
- easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment/item/test_factory.py +28 -0
- {easydiffraction-0.10.2/tests/unit/easydiffraction/experiments/experiment → easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment/item}/test_total_pd.py +15 -15
- easydiffraction-0.10.2/tests/unit/easydiffraction/experiments/test_experiments.py → easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/experiment/test_collection.py +10 -9
- {easydiffraction-0.10.2/tests/unit/easydiffraction/sample_models → easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/structure}/categories/test_space_group.py +2 -2
- easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/structure/item/test_base.py +12 -0
- easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/structure/item/test_factory.py +9 -0
- easydiffraction-0.11.0/tests/unit/easydiffraction/datablocks/structure/test_collection.py +2 -0
- easydiffraction-0.11.0/tests/unit/easydiffraction/display/plotters/test_ascii.py +50 -0
- easydiffraction-0.11.0/tests/unit/easydiffraction/display/plotters/test_base.py +68 -0
- easydiffraction-0.11.0/tests/unit/easydiffraction/display/plotters/test_plotly.py +174 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/display/test_plotting.py +38 -27
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/io/cif/test_handler.py +2 -1
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/io/cif/test_serialize.py +6 -5
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/io/cif/test_serialize_more.py +9 -12
- easydiffraction-0.11.0/tests/unit/easydiffraction/project/test_project.py +51 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/project/test_project_info.py +2 -1
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/project/test_project_load_and_summary_wrap.py +6 -6
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/project/test_project_save.py +6 -5
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/summary/test_summary.py +3 -8
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/summary/test_summary_details.py +4 -4
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/test___init__.py +3 -4
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/test___main__.py +1 -1
- easydiffraction-0.11.0/tests/unit/easydiffraction/utils/test_enums.py +27 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/utils/test_logging.py +2 -1
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/utils/test_theme_detect.py +93 -122
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tests/unit/easydiffraction/utils/test_utils.py +11 -15
- easydiffraction-0.11.0/tmp/__validator.py +87 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/basic_single-fit_pd-neut-cwl_LBCO-HRPT.py +6 -20
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/cryst-struct_pd-neut-tof_multiphase-BSFTO-HRPT.py +0 -6
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/short7.py +0 -1
- easydiffraction-0.11.0/tmp/show_d401.py +26 -0
- easydiffraction-0.11.0/tmp/show_w505.py +27 -0
- easydiffraction-0.11.0/tools/convert_google_docstrings_to_numpy.py +539 -0
- easydiffraction-0.11.0/tools/license_headers.py +315 -0
- easydiffraction-0.11.0/tools/param_consistency.py +677 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tools/test_scripts.py +6 -5
- easydiffraction-0.11.0/tools/update_docs_assets.py +91 -0
- easydiffraction-0.11.0/tools/update_github_labels.py +341 -0
- easydiffraction-0.10.2/.github/workflows/backmerge.yaml +0 -66
- easydiffraction-0.10.2/.github/workflows/pypi-publish.yaml +0 -43
- easydiffraction-0.10.2/.github/workflows/pypi-test.yaml +0 -97
- easydiffraction-0.10.2/.github/workflows/quality.yaml +0 -123
- easydiffraction-0.10.2/.github/workflows/release-pr.yaml +0 -57
- easydiffraction-0.10.2/.github/workflows/security.yaml +0 -39
- easydiffraction-0.10.2/.github/workflows/test.yaml +0 -259
- easydiffraction-0.10.2/.pre-commit-config.yaml +0 -57
- easydiffraction-0.10.2/.prettierignore +0 -6
- easydiffraction-0.10.2/CONTRIBUTING.md +0 -94
- easydiffraction-0.10.2/DEVELOPMENT.md +0 -150
- easydiffraction-0.10.2/PKG-INFO +0 -188
- easydiffraction-0.10.2/README.md +0 -53
- easydiffraction-0.10.2/docs/api-reference/experiments.md +0 -1
- easydiffraction-0.10.2/docs/api-reference/sample_models.md +0 -1
- easydiffraction-0.10.2/docs/architecture/package-structure-full.md +0 -278
- easydiffraction-0.10.2/docs/mkdocs.yml +0 -99
- easydiffraction-0.10.2/docs/tutorials/index.md +0 -79
- easydiffraction-0.10.2/docs/user-guide/analysis-workflow/index.md +0 -34
- easydiffraction-0.10.2/docs/user-guide/first-steps.md +0 -182
- easydiffraction-0.10.2/pixi.toml +0 -210
- easydiffraction-0.10.2/pyproject.toml +0 -301
- easydiffraction-0.10.2/pytest.ini +0 -13
- easydiffraction-0.10.2/src/easydiffraction/__init__.py +0 -30
- easydiffraction-0.10.2/src/easydiffraction/analysis/__init__.py +0 -2
- easydiffraction-0.10.2/src/easydiffraction/analysis/analysis.py +0 -631
- easydiffraction-0.10.2/src/easydiffraction/analysis/calculators/__init__.py +0 -2
- easydiffraction-0.10.2/src/easydiffraction/analysis/calculators/base.py +0 -57
- easydiffraction-0.10.2/src/easydiffraction/analysis/calculators/cryspy.py +0 -416
- easydiffraction-0.10.2/src/easydiffraction/analysis/calculators/factory.py +0 -105
- easydiffraction-0.10.2/src/easydiffraction/analysis/categories/__init__.py +0 -2
- easydiffraction-0.10.2/src/easydiffraction/analysis/categories/aliases.py +0 -106
- easydiffraction-0.10.2/src/easydiffraction/analysis/categories/constraints.py +0 -111
- easydiffraction-0.10.2/src/easydiffraction/analysis/categories/joint_fit_experiments.py +0 -104
- easydiffraction-0.10.2/src/easydiffraction/analysis/fit_helpers/__init__.py +0 -2
- easydiffraction-0.10.2/src/easydiffraction/analysis/minimizers/__init__.py +0 -2
- easydiffraction-0.10.2/src/easydiffraction/analysis/minimizers/factory.py +0 -126
- easydiffraction-0.10.2/src/easydiffraction/analysis/minimizers/lmfit.py +0 -124
- easydiffraction-0.10.2/src/easydiffraction/core/__init__.py +0 -2
- easydiffraction-0.10.2/src/easydiffraction/core/category.py +0 -115
- easydiffraction-0.10.2/src/easydiffraction/core/collection.py +0 -102
- easydiffraction-0.10.2/src/easydiffraction/core/datablock.py +0 -128
- easydiffraction-0.10.2/src/easydiffraction/core/factory.py +0 -36
- easydiffraction-0.10.2/src/easydiffraction/core/guard.py +0 -143
- easydiffraction-0.10.2/src/easydiffraction/crystallography/__init__.py +0 -2
- easydiffraction-0.10.2/src/easydiffraction/display/__init__.py +0 -17
- easydiffraction-0.10.2/src/easydiffraction/display/plotters/__init__.py +0 -10
- easydiffraction-0.10.2/src/easydiffraction/display/plotters/ascii.py +0 -86
- easydiffraction-0.10.2/src/easydiffraction/display/plotters/base.py +0 -83
- easydiffraction-0.10.2/src/easydiffraction/display/plotters/plotly.py +0 -155
- easydiffraction-0.10.2/src/easydiffraction/display/plotting.py +0 -440
- easydiffraction-0.10.2/src/easydiffraction/display/tablers/__init__.py +0 -10
- easydiffraction-0.10.2/src/easydiffraction/experiments/__init__.py +0 -2
- easydiffraction-0.10.2/src/easydiffraction/experiments/categories/__init__.py +0 -2
- easydiffraction-0.10.2/src/easydiffraction/experiments/categories/background/__init__.py +0 -2
- easydiffraction-0.10.2/src/easydiffraction/experiments/categories/background/factory.py +0 -66
- easydiffraction-0.10.2/src/easydiffraction/experiments/categories/data/bragg_pd.py +0 -455
- easydiffraction-0.10.2/src/easydiffraction/experiments/categories/data/bragg_sc.py +0 -96
- easydiffraction-0.10.2/src/easydiffraction/experiments/categories/data/factory.py +0 -76
- easydiffraction-0.10.2/src/easydiffraction/experiments/categories/data/total.py +0 -267
- easydiffraction-0.10.2/src/easydiffraction/experiments/categories/experiment_type.py +0 -156
- easydiffraction-0.10.2/src/easydiffraction/experiments/categories/instrument/__init__.py +0 -2
- easydiffraction-0.10.2/src/easydiffraction/experiments/categories/instrument/cwl.py +0 -72
- easydiffraction-0.10.2/src/easydiffraction/experiments/categories/instrument/factory.py +0 -74
- easydiffraction-0.10.2/src/easydiffraction/experiments/categories/instrument/tof.py +0 -153
- easydiffraction-0.10.2/src/easydiffraction/experiments/categories/linked_phases.py +0 -86
- easydiffraction-0.10.2/src/easydiffraction/experiments/categories/peak/__init__.py +0 -2
- easydiffraction-0.10.2/src/easydiffraction/experiments/categories/peak/cwl.py +0 -45
- easydiffraction-0.10.2/src/easydiffraction/experiments/categories/peak/cwl_mixins.py +0 -332
- easydiffraction-0.10.2/src/easydiffraction/experiments/categories/peak/factory.py +0 -130
- easydiffraction-0.10.2/src/easydiffraction/experiments/categories/peak/tof.py +0 -44
- easydiffraction-0.10.2/src/easydiffraction/experiments/categories/peak/tof_mixins.py +0 -293
- easydiffraction-0.10.2/src/easydiffraction/experiments/categories/peak/total.py +0 -17
- easydiffraction-0.10.2/src/easydiffraction/experiments/categories/peak/total_mixins.py +0 -181
- easydiffraction-0.10.2/src/easydiffraction/experiments/experiment/__init__.py +0 -16
- easydiffraction-0.10.2/src/easydiffraction/experiments/experiment/base.py +0 -264
- easydiffraction-0.10.2/src/easydiffraction/experiments/experiment/bragg_pd.py +0 -134
- easydiffraction-0.10.2/src/easydiffraction/experiments/experiment/bragg_sc.py +0 -28
- easydiffraction-0.10.2/src/easydiffraction/experiments/experiment/factory.py +0 -181
- easydiffraction-0.10.2/src/easydiffraction/experiments/experiment/instrument_mixin.py +0 -46
- easydiffraction-0.10.2/src/easydiffraction/experiments/experiment/total_pd.py +0 -59
- easydiffraction-0.10.2/src/easydiffraction/experiments/experiments.py +0 -134
- easydiffraction-0.10.2/src/easydiffraction/io/__init__.py +0 -2
- easydiffraction-0.10.2/src/easydiffraction/io/cif/__init__.py +0 -2
- easydiffraction-0.10.2/src/easydiffraction/project/__init__.py +0 -2
- easydiffraction-0.10.2/src/easydiffraction/sample_models/__init__.py +0 -2
- easydiffraction-0.10.2/src/easydiffraction/sample_models/categories/__init__.py +0 -2
- easydiffraction-0.10.2/src/easydiffraction/sample_models/categories/atom_sites.py +0 -334
- easydiffraction-0.10.2/src/easydiffraction/sample_models/categories/cell.py +0 -188
- easydiffraction-0.10.2/src/easydiffraction/sample_models/categories/space_group.py +0 -107
- easydiffraction-0.10.2/src/easydiffraction/sample_models/sample_model/__init__.py +0 -2
- easydiffraction-0.10.2/src/easydiffraction/sample_models/sample_model/base.py +0 -183
- easydiffraction-0.10.2/src/easydiffraction/sample_models/sample_model/factory.py +0 -103
- easydiffraction-0.10.2/src/easydiffraction/sample_models/sample_models.py +0 -87
- easydiffraction-0.10.2/src/easydiffraction/summary/__init__.py +0 -2
- easydiffraction-0.10.2/src/easydiffraction/utils/__init__.py +0 -10
- easydiffraction-0.10.2/src/easydiffraction/utils/_vendored/__init__.py +0 -23
- easydiffraction-0.10.2/src/easydiffraction/utils/_vendored/jupyter_dark_detect/__init__.py +0 -10
- easydiffraction-0.10.2/tests/integration/fitting/test_powder-diffraction_multiphase.py +0 -143
- easydiffraction-0.10.2/tests/unit/easydiffraction/analysis/calculators/test_factory.py +0 -41
- easydiffraction-0.10.2/tests/unit/easydiffraction/analysis/categories/test_constraints.py +0 -14
- easydiffraction-0.10.2/tests/unit/easydiffraction/core/test_collection.py +0 -31
- easydiffraction-0.10.2/tests/unit/easydiffraction/core/test_factory.py +0 -29
- easydiffraction-0.10.2/tests/unit/easydiffraction/core/test_guard.py +0 -53
- easydiffraction-0.10.2/tests/unit/easydiffraction/display/plotters/test_ascii.py +0 -23
- easydiffraction-0.10.2/tests/unit/easydiffraction/display/plotters/test_base.py +0 -39
- easydiffraction-0.10.2/tests/unit/easydiffraction/display/plotters/test_plotly.py +0 -87
- easydiffraction-0.10.2/tests/unit/easydiffraction/experiments/categories/background/test_enums.py +0 -11
- easydiffraction-0.10.2/tests/unit/easydiffraction/experiments/categories/background/test_factory.py +0 -24
- easydiffraction-0.10.2/tests/unit/easydiffraction/experiments/categories/instrument/test_factory.py +0 -37
- easydiffraction-0.10.2/tests/unit/easydiffraction/experiments/categories/peak/test_factory.py +0 -58
- easydiffraction-0.10.2/tests/unit/easydiffraction/experiments/categories/test_experiment_type.py +0 -36
- easydiffraction-0.10.2/tests/unit/easydiffraction/experiments/categories/test_linked_phases.py +0 -16
- easydiffraction-0.10.2/tests/unit/easydiffraction/experiments/experiment/test_base.py +0 -38
- easydiffraction-0.10.2/tests/unit/easydiffraction/experiments/experiment/test_bragg_sc.py +0 -35
- easydiffraction-0.10.2/tests/unit/easydiffraction/experiments/experiment/test_factory.py +0 -35
- easydiffraction-0.10.2/tests/unit/easydiffraction/experiments/experiment/test_instrument_mixin.py +0 -9
- easydiffraction-0.10.2/tests/unit/easydiffraction/project/test_project.py +0 -9
- easydiffraction-0.10.2/tests/unit/easydiffraction/sample_models/categories/test_atom_sites.py +0 -28
- easydiffraction-0.10.2/tests/unit/easydiffraction/sample_models/categories/test_cell.py +0 -43
- easydiffraction-0.10.2/tests/unit/easydiffraction/sample_models/sample_model/test_base.py +0 -12
- easydiffraction-0.10.2/tests/unit/easydiffraction/sample_models/sample_model/test_factory.py +0 -16
- easydiffraction-0.10.2/tests/unit/easydiffraction/sample_models/test_sample_models.py +0 -6
- easydiffraction-0.10.2/tools/add_assets_to_docs.sh +0 -16
- easydiffraction-0.10.2/tools/cleanup_docs.sh +0 -10
- easydiffraction-0.10.2/tools/create_mkdocs_yml.py +0 -158
- easydiffraction-0.10.2/tools/update_spdx.py +0 -109
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/.codefactorignore +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/deps/pycrysfml-0.1.6-py312-none-macosx_14_0_arm64.whl +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/deps/pycrysfml-0.1.6-py312-none-win_amd64.whl +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/api-reference/analysis.md +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/api-reference/core.md +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/api-reference/crystallography.md +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/api-reference/display.md +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/api-reference/io.md +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/api-reference/project.md +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/api-reference/summary.md +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/api-reference/utils.md +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/assets/images/user-guide/data-acquisition_2d-raw-data.jpg +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/assets/images/user-guide/data-acquisition_instrument.png +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/assets/images/user-guide/data-analysis_model.png +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/assets/images/user-guide/data-analysis_refinement.png +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/assets/images/user-guide/data-reduction_1d-pattern.png +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/user-guide/parameters/_exptl_crystal.md +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0/docs}/docs/user-guide/parameters/_extinction.md +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/src/easydiffraction/crystallography/space_groups.pkl.gz +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/Untitled.ipynb +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/Untitled0.ipynb +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/Untitled1.ipynb +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/Untitled2.ipynb +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/_gemmi.py +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/_read_cif.py +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/_smart.py +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/data/DREAM_mantle_bc240_nist_cif.xye +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/data/DREAM_mantle_bc240_nist_cif_2.xye +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/data/DREAM_mantle_bc240_nist_nc.xye +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/data/DREAM_mantle_bc240_nist_nc_2.xye +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/data/Si_mp-149_symmetrized_mcstas.cif +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/data/hrpt.cif +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/data/hrpt_lbco.xye +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/data/large_structure.cif +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/data/lbco.cif +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/data_old/mcstas_lbco-si.xys +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/data_old/mcstas_lbco-si_up-to-108k.xys +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/data_old/powder_reduced_Si_2large_bank.xye +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/data_old/reduced_LBCO.xye +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/data_old/reduced_Si.xye +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/data_old/wish_ncaf.xye +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/data_old/wish_ncaf_2_9.xye +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/data_old/wish_ncaf_4_7.xye +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/data_old/wish_ncaf_4_7.xys +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/data_old/wish_ncaf_5_6.xye +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/data_old/wish_ybcfo_5_6.xye +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/display.py +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/display2.py +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/display3-Copy1.py +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/display3.py +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/generate_overview_mermaid.py +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/hrpt_n_Bi0p88Sm0p12Fe0p94Ti0p06O3_DW_V_9x8x52_1p49_HI.xye +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/short.py +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/short2.py +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/short3.py +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/short5.py +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/short6.py +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tmp/test_single-fit_pd-neut-tof_Si-DREAM_nc.py +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tools/gen_tests_scaffold.py +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tools/generate_package_docs.py +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tools/naming_check.py +0 -0
- {easydiffraction-0.10.2 → easydiffraction-0.11.0}/tools/tweak_notebooks.py +0 -0
|
@@ -5,19 +5,18 @@ cards:
|
|
|
5
5
|
- group: Tests
|
|
6
6
|
type: gh_action
|
|
7
7
|
title: Code/package tests (GitHub)
|
|
8
|
-
file: test.
|
|
8
|
+
file: test.yml
|
|
9
9
|
enabled: true
|
|
10
|
-
|
|
11
10
|
- group: Tests
|
|
12
11
|
type: gh_action
|
|
13
12
|
title: Tutorial tests (GitHub)
|
|
14
|
-
file: tutorial-tests.
|
|
13
|
+
file: tutorial-tests.yml
|
|
15
14
|
enabled: true
|
|
16
15
|
|
|
17
16
|
- group: Tests
|
|
18
17
|
type: gh_action
|
|
19
18
|
title: Package tests (PyPI)
|
|
20
|
-
file: pypi-test.
|
|
19
|
+
file: pypi-test.yml
|
|
21
20
|
enabled: true
|
|
22
21
|
|
|
23
22
|
- group: Code Quality
|
|
@@ -60,15 +59,14 @@ cards:
|
|
|
60
59
|
title: Docstring coverage (interrogate)
|
|
61
60
|
report: reports/{branch}/coverage-docstring.txt
|
|
62
61
|
enabled: true
|
|
63
|
-
|
|
64
62
|
- group: Build & Release
|
|
65
63
|
type: gh_action
|
|
66
64
|
title: Publishing (PyPI)
|
|
67
|
-
workflow: pypi-publish.
|
|
65
|
+
workflow: pypi-publish.yml
|
|
68
66
|
enabled: true
|
|
69
67
|
|
|
70
68
|
- group: Build & Release
|
|
71
69
|
type: gh_action
|
|
72
70
|
title: Docs build/deployment
|
|
73
|
-
workflow: docs.
|
|
71
|
+
workflow: docs.yml
|
|
74
72
|
enabled: true
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# WARNING: Do not edit this file manually.
|
|
2
|
+
# Any changes will be overwritten by Copier.
|
|
3
|
+
_commit: v0.10.1-25-ga5301e9
|
|
4
|
+
_src_path: gh:easyscience/templates
|
|
5
|
+
app_docs_url: https://easyscience.github.io/diffraction-app
|
|
6
|
+
app_doi: 10.5281/zenodo.18163581
|
|
7
|
+
app_package_name: easydiffraction_app
|
|
8
|
+
app_python: '3.13'
|
|
9
|
+
app_repo_name: diffraction-app
|
|
10
|
+
home_page_url: https://easyscience.github.io/diffraction
|
|
11
|
+
home_repo_name: diffraction
|
|
12
|
+
lib_docs_url: https://easyscience.github.io/diffraction-lib
|
|
13
|
+
lib_doi: 10.5281/zenodo.18163581
|
|
14
|
+
lib_package_name: easydiffraction
|
|
15
|
+
lib_python_max: '3.13'
|
|
16
|
+
lib_python_min: '3.11'
|
|
17
|
+
lib_repo_name: diffraction-lib
|
|
18
|
+
project_contact_email: support@easydiffraction.org
|
|
19
|
+
project_copyright_years: 2021-2026
|
|
20
|
+
project_extended_description: A software for calculating neutron powder diffraction
|
|
21
|
+
patterns based on a structural model and refining its parameters against experimental
|
|
22
|
+
data
|
|
23
|
+
project_name: EasyDiffraction
|
|
24
|
+
project_short_description: Diffraction data analysis
|
|
25
|
+
project_shortcut: ED
|
|
26
|
+
project_type: both
|
|
27
|
+
template_type: lib
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
name: 'Download artifact'
|
|
2
|
+
description: 'Generic wrapper for actions/download-artifact'
|
|
3
|
+
inputs:
|
|
4
|
+
name:
|
|
5
|
+
description: 'Name of the artifact to download'
|
|
6
|
+
required: true
|
|
7
|
+
|
|
8
|
+
path:
|
|
9
|
+
description: 'Destination path'
|
|
10
|
+
required: false
|
|
11
|
+
default: '.'
|
|
12
|
+
|
|
13
|
+
pattern:
|
|
14
|
+
description: 'Glob pattern to match artifact names (optional)'
|
|
15
|
+
required: false
|
|
16
|
+
default: ''
|
|
17
|
+
|
|
18
|
+
merge-multiple:
|
|
19
|
+
description: 'Merge multiple artifacts into the same directory'
|
|
20
|
+
required: false
|
|
21
|
+
default: 'false'
|
|
22
|
+
|
|
23
|
+
github-token:
|
|
24
|
+
description: 'GitHub token for cross-repo download (optional)'
|
|
25
|
+
required: false
|
|
26
|
+
default: ''
|
|
27
|
+
|
|
28
|
+
repository:
|
|
29
|
+
description: 'owner/repo for cross-repo download (optional)'
|
|
30
|
+
required: false
|
|
31
|
+
default: ''
|
|
32
|
+
|
|
33
|
+
run-id:
|
|
34
|
+
description: 'Workflow run ID for cross-run download (optional)'
|
|
35
|
+
required: false
|
|
36
|
+
default: ''
|
|
37
|
+
|
|
38
|
+
runs:
|
|
39
|
+
using: 'composite'
|
|
40
|
+
steps:
|
|
41
|
+
- name: Download artifact
|
|
42
|
+
uses: actions/download-artifact@v4
|
|
43
|
+
with:
|
|
44
|
+
name: ${{ inputs.name }}
|
|
45
|
+
path: ${{ inputs.path }}
|
|
46
|
+
pattern: ${{ inputs.pattern }}
|
|
47
|
+
merge-multiple: ${{ inputs.merge-multiple }}
|
|
48
|
+
github-token: ${{ inputs.github-token }}
|
|
49
|
+
repository: ${{ inputs.repository }}
|
|
50
|
+
run-id: ${{ inputs.run-id }}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
name: 'GitHub Script'
|
|
2
|
+
description: 'Wrapper for actions/github-script'
|
|
3
|
+
inputs:
|
|
4
|
+
script:
|
|
5
|
+
description: 'JavaScript to run'
|
|
6
|
+
required: true
|
|
7
|
+
|
|
8
|
+
github-token:
|
|
9
|
+
description: 'GitHub token (defaults to github.token)'
|
|
10
|
+
required: false
|
|
11
|
+
default: ${{ github.token }}
|
|
12
|
+
|
|
13
|
+
runs:
|
|
14
|
+
using: 'composite'
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/github-script@v8
|
|
17
|
+
with:
|
|
18
|
+
script: ${{ inputs.script }}
|
|
19
|
+
github-token: ${{ inputs.github-token }}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
name: 'Setup EasyScience bot for pushing'
|
|
2
|
+
description: 'Create GitHub App token and configure git identity + origin remote'
|
|
3
|
+
inputs:
|
|
4
|
+
app-id:
|
|
5
|
+
description: 'GitHub App ID'
|
|
6
|
+
required: true
|
|
7
|
+
private-key:
|
|
8
|
+
description: 'GitHub App private key (PEM)'
|
|
9
|
+
required: true
|
|
10
|
+
repositories:
|
|
11
|
+
description: 'Additional repositories to grant access to (newline-separated)'
|
|
12
|
+
required: false
|
|
13
|
+
default: ''
|
|
14
|
+
|
|
15
|
+
outputs:
|
|
16
|
+
token:
|
|
17
|
+
description: 'Installation access token'
|
|
18
|
+
value: ${{ steps.app-token.outputs.token }}
|
|
19
|
+
|
|
20
|
+
runs:
|
|
21
|
+
using: 'composite'
|
|
22
|
+
steps:
|
|
23
|
+
- name: Create GitHub App installation token
|
|
24
|
+
id: app-token
|
|
25
|
+
uses: actions/create-github-app-token@v2
|
|
26
|
+
with:
|
|
27
|
+
app-id: ${{ inputs.app-id }}
|
|
28
|
+
private-key: ${{ inputs.private-key }}
|
|
29
|
+
repositories: ${{ inputs.repositories }}
|
|
30
|
+
|
|
31
|
+
- name: Configure git for pushing
|
|
32
|
+
shell: bash
|
|
33
|
+
run: |
|
|
34
|
+
git config user.name "easyscience[bot]"
|
|
35
|
+
git config user.email "${{ inputs.app-id }}+easyscience[bot]@users.noreply.github.com"
|
|
36
|
+
|
|
37
|
+
- name: Configure origin remote to use the bot token
|
|
38
|
+
shell: bash
|
|
39
|
+
run: |
|
|
40
|
+
git remote set-url origin https://x-access-token:${{ steps.app-token.outputs.token }}@github.com/${{ github.repository }}.git
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
name: 'Setup Pixi Environment'
|
|
2
|
+
description: 'Sets up pixi with common configuration'
|
|
3
|
+
inputs:
|
|
4
|
+
environments:
|
|
5
|
+
description: 'Pixi environments to setup'
|
|
6
|
+
required: false
|
|
7
|
+
default: 'default'
|
|
8
|
+
activate-environment:
|
|
9
|
+
description: 'Environment to activate'
|
|
10
|
+
required: false
|
|
11
|
+
default: 'default'
|
|
12
|
+
run-install:
|
|
13
|
+
description: 'Whether to run pixi install'
|
|
14
|
+
required: false
|
|
15
|
+
default: 'true'
|
|
16
|
+
locked:
|
|
17
|
+
description: 'Whether to run pixi install --locked'
|
|
18
|
+
required: false
|
|
19
|
+
default: 'false'
|
|
20
|
+
frozen:
|
|
21
|
+
description: 'Whether to run pixi install --frozen'
|
|
22
|
+
required: false
|
|
23
|
+
default: 'true'
|
|
24
|
+
cache:
|
|
25
|
+
description: 'Whether to use cache'
|
|
26
|
+
required: false
|
|
27
|
+
default: 'false'
|
|
28
|
+
post-cleanup:
|
|
29
|
+
description: 'Whether to run post cleanup'
|
|
30
|
+
required: false
|
|
31
|
+
default: 'false'
|
|
32
|
+
|
|
33
|
+
runs:
|
|
34
|
+
using: 'composite'
|
|
35
|
+
steps:
|
|
36
|
+
- uses: prefix-dev/setup-pixi@v0.9.4
|
|
37
|
+
with:
|
|
38
|
+
environments: ${{ inputs.environments }}
|
|
39
|
+
activate-environment: ${{ inputs.activate-environment }}
|
|
40
|
+
run-install: ${{ inputs.run-install }}
|
|
41
|
+
locked: ${{ inputs.locked }}
|
|
42
|
+
frozen: ${{ inputs.frozen }}
|
|
43
|
+
cache: ${{ inputs.cache }}
|
|
44
|
+
post-cleanup: ${{ inputs.post-cleanup }}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
name: 'Upload artifact'
|
|
2
|
+
description: 'Generic wrapper for actions/upload-artifact'
|
|
3
|
+
inputs:
|
|
4
|
+
name:
|
|
5
|
+
description: 'Artifact name'
|
|
6
|
+
required: true
|
|
7
|
+
|
|
8
|
+
path:
|
|
9
|
+
description: 'File(s)/dir(s)/glob(s) to upload (newline-separated)'
|
|
10
|
+
required: true
|
|
11
|
+
|
|
12
|
+
include-hidden-files:
|
|
13
|
+
description: 'Include hidden files'
|
|
14
|
+
required: false
|
|
15
|
+
default: 'true'
|
|
16
|
+
|
|
17
|
+
if-no-files-found:
|
|
18
|
+
description: 'warn | error | ignore'
|
|
19
|
+
required: false
|
|
20
|
+
default: 'error'
|
|
21
|
+
|
|
22
|
+
compression-level:
|
|
23
|
+
description: '0-9 (0 = no compression)'
|
|
24
|
+
required: false
|
|
25
|
+
default: '0'
|
|
26
|
+
|
|
27
|
+
retention-days:
|
|
28
|
+
description: 'Retention in days (optional)'
|
|
29
|
+
required: false
|
|
30
|
+
default: ''
|
|
31
|
+
|
|
32
|
+
overwrite:
|
|
33
|
+
description: 'Overwrite an existing artifact with the same name'
|
|
34
|
+
required: false
|
|
35
|
+
default: 'false'
|
|
36
|
+
|
|
37
|
+
runs:
|
|
38
|
+
using: 'composite'
|
|
39
|
+
steps:
|
|
40
|
+
- name: Upload artifact
|
|
41
|
+
uses: actions/upload-artifact@v4
|
|
42
|
+
with:
|
|
43
|
+
name: ${{ inputs.name }}
|
|
44
|
+
path: ${{ inputs.path }}
|
|
45
|
+
include-hidden-files: ${{ inputs.include-hidden-files }}
|
|
46
|
+
if-no-files-found: ${{ inputs.if-no-files-found }}
|
|
47
|
+
compression-level: ${{ inputs.compression-level }}
|
|
48
|
+
retention-days: ${{ inputs.retention-days }}
|
|
49
|
+
overwrite: ${{ inputs.overwrite }}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
name: 'Upload coverage to Codecov'
|
|
2
|
+
description: 'Generic wrapper for codecov/codecov-action@v5'
|
|
3
|
+
|
|
4
|
+
inputs:
|
|
5
|
+
name:
|
|
6
|
+
description: 'Codecov upload name'
|
|
7
|
+
required: true
|
|
8
|
+
|
|
9
|
+
flags:
|
|
10
|
+
description: 'Codecov flags'
|
|
11
|
+
required: false
|
|
12
|
+
default: ''
|
|
13
|
+
|
|
14
|
+
files:
|
|
15
|
+
description: 'Coverage report files'
|
|
16
|
+
required: true
|
|
17
|
+
|
|
18
|
+
fail_ci_if_error:
|
|
19
|
+
description: 'Fail CI if upload fails'
|
|
20
|
+
required: false
|
|
21
|
+
default: 'true'
|
|
22
|
+
|
|
23
|
+
verbose:
|
|
24
|
+
description: 'Enable verbose output'
|
|
25
|
+
required: false
|
|
26
|
+
default: 'true'
|
|
27
|
+
|
|
28
|
+
token:
|
|
29
|
+
description: 'Codecov token'
|
|
30
|
+
required: true
|
|
31
|
+
|
|
32
|
+
runs:
|
|
33
|
+
using: composite
|
|
34
|
+
steps:
|
|
35
|
+
- uses: codecov/codecov-action@v5
|
|
36
|
+
with:
|
|
37
|
+
name: ${{ inputs.name }}
|
|
38
|
+
flags: ${{ inputs.flags }}
|
|
39
|
+
files: ${{ inputs.files }}
|
|
40
|
+
fail_ci_if_error: ${{ inputs.fail_ci_if_error }}
|
|
41
|
+
verbose: ${{ inputs.verbose }}
|
|
42
|
+
token: ${{ inputs.token }}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "develop branch",
|
|
3
|
+
"target": "branch",
|
|
4
|
+
"enforcement": "active",
|
|
5
|
+
"conditions": {
|
|
6
|
+
"ref_name": {
|
|
7
|
+
"include": ["refs/heads/develop"],
|
|
8
|
+
"exclude": []
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"bypass_actors": [
|
|
12
|
+
{
|
|
13
|
+
"actor_id": 2476259,
|
|
14
|
+
"actor_type": "Integration",
|
|
15
|
+
"bypass_mode": "always"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"rules": [
|
|
19
|
+
{
|
|
20
|
+
"type": "non_fast_forward"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"type": "deletion"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"type": "pull_request",
|
|
27
|
+
"parameters": {
|
|
28
|
+
"allowed_merge_methods": ["squash"],
|
|
29
|
+
"dismiss_stale_reviews_on_push": false,
|
|
30
|
+
"require_code_owner_review": false,
|
|
31
|
+
"require_last_push_approval": false,
|
|
32
|
+
"required_approving_review_count": 0,
|
|
33
|
+
"required_review_thread_resolution": false
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
]
|
|
37
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "gh-pages branch",
|
|
3
|
+
"target": "branch",
|
|
4
|
+
"enforcement": "active",
|
|
5
|
+
"conditions": {
|
|
6
|
+
"ref_name": {
|
|
7
|
+
"include": ["refs/heads/gh-pages"],
|
|
8
|
+
"exclude": []
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"rules": [
|
|
12
|
+
{
|
|
13
|
+
"type": "non_fast_forward"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"type": "deletion"
|
|
17
|
+
}
|
|
18
|
+
]
|
|
19
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "master branch",
|
|
3
|
+
"target": "branch",
|
|
4
|
+
"enforcement": "active",
|
|
5
|
+
"conditions": {
|
|
6
|
+
"ref_name": {
|
|
7
|
+
"include": ["~DEFAULT_BRANCH"],
|
|
8
|
+
"exclude": []
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"rules": [
|
|
12
|
+
{
|
|
13
|
+
"type": "non_fast_forward"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"type": "deletion"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"type": "pull_request",
|
|
20
|
+
"parameters": {
|
|
21
|
+
"allowed_merge_methods": ["merge"],
|
|
22
|
+
"dismiss_stale_reviews_on_push": false,
|
|
23
|
+
"require_code_owner_review": false,
|
|
24
|
+
"require_last_push_approval": false,
|
|
25
|
+
"required_approving_review_count": 0,
|
|
26
|
+
"required_review_thread_resolution": false
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
# Copilot Instructions for EasyDiffraction
|
|
2
|
+
|
|
3
|
+
## Project Context
|
|
4
|
+
|
|
5
|
+
- Python library for crystallographic diffraction analysis, such as
|
|
6
|
+
refinement of the structural model against experimental data.
|
|
7
|
+
- Support for
|
|
8
|
+
- sample_form: powder and single crystal
|
|
9
|
+
- beam_mode: time-of-flight and constant wavelength
|
|
10
|
+
- radiation_probe: neutron and x-ray
|
|
11
|
+
- scattering_type: bragg and total scattering
|
|
12
|
+
- Calculations are done using external calculation libraries:
|
|
13
|
+
- `cryspy` for Bragg diffraction
|
|
14
|
+
- `crysfml` for Bragg diffraction
|
|
15
|
+
- `pdffit2` for Total scattering
|
|
16
|
+
- Follow CIF naming conventions where possible. In some places, we
|
|
17
|
+
deviate for better API design, but we try to keep the spirit of the
|
|
18
|
+
CIF names.
|
|
19
|
+
- Reusing the concept of datablocks and categories from CIF. We have
|
|
20
|
+
`DatablockItem` (structure or experiment) and `DatablockCollection`
|
|
21
|
+
(collection of structures or experiments), as well as `CategoryItem`
|
|
22
|
+
(single categories in CIF) and `CategoryCollection` (loop categories
|
|
23
|
+
in CIF).
|
|
24
|
+
- Metadata via frozen dataclasses: `TypeInfo`, `Compatibility`,
|
|
25
|
+
`CalculatorSupport`.
|
|
26
|
+
- The API is designed for scientists who use EasyDiffraction as a final
|
|
27
|
+
product in a user-friendly, intuitive way. The target users are not
|
|
28
|
+
software developers and may have little or no Python experience. The
|
|
29
|
+
design is not oriented toward developers building their own tooling on
|
|
30
|
+
top of the library, although experienced developers will find their
|
|
31
|
+
own way. Prioritize discoverability, clear error messages, and safe
|
|
32
|
+
defaults so that non-programmers are not stuck by standard API
|
|
33
|
+
conventions.
|
|
34
|
+
- This project must be developed to be as error-free as possible, with
|
|
35
|
+
the same rigour applied to critical software (e.g. nuclear-plant
|
|
36
|
+
control systems). Every code path must be tested, edge cases must be
|
|
37
|
+
handled explicitly, and silent failures are not acceptable.
|
|
38
|
+
|
|
39
|
+
## Code Style
|
|
40
|
+
|
|
41
|
+
- Use snake_case for functions and variables, PascalCase for classes,
|
|
42
|
+
and UPPER_SNAKE_CASE for constants.
|
|
43
|
+
- Use `from __future__ import annotations` in every module.
|
|
44
|
+
- Type-annotate all public function signatures.
|
|
45
|
+
- Docstrings on all public classes and methods (numpy style).
|
|
46
|
+
- Prefer flat over nested, explicit over clever.
|
|
47
|
+
- Write straightforward code; do not add defensive checks for unlikely
|
|
48
|
+
edge cases.
|
|
49
|
+
- Prefer composition over deep inheritance.
|
|
50
|
+
- One class per file when the class is substantial; group small related
|
|
51
|
+
classes.
|
|
52
|
+
- Avoid `**kwargs`; use explicit keyword arguments for clarity,
|
|
53
|
+
autocomplete, and typo detection.
|
|
54
|
+
- Do not use string-based dispatch (e.g. `getattr(self, f'_{name}')`) to
|
|
55
|
+
route to attributes or methods. Instead, write explicit named methods
|
|
56
|
+
(e.g. `_set_sample_form`, `_set_beam_mode`). This keeps the code
|
|
57
|
+
greppable, autocomplete-friendly, and type-safe.
|
|
58
|
+
- Public parameters and descriptors are either **editable** (property
|
|
59
|
+
with both getter and setter) or **read-only** (property with getter
|
|
60
|
+
only). If internal code needs to mutate a read-only property, add a
|
|
61
|
+
private `_set_<name>` method instead of exposing a public setter.
|
|
62
|
+
|
|
63
|
+
## Architecture
|
|
64
|
+
|
|
65
|
+
- Eager imports at the top of the module by default. Use lazy imports
|
|
66
|
+
(inside a method body) only when necessary to break circular
|
|
67
|
+
dependencies or to keep `core/` free of heavy utility imports on
|
|
68
|
+
rarely-called paths (e.g. `help()`).
|
|
69
|
+
- No `pkgutil` / `importlib` auto-discovery patterns.
|
|
70
|
+
- No background/daemon threads.
|
|
71
|
+
- No monkey-patching or runtime class mutation.
|
|
72
|
+
- Do not use `__all__` in modules; instead, rely on explicit imports in
|
|
73
|
+
`__init__.py` to control the public API.
|
|
74
|
+
- Do not use redundant `import X as X` aliases in `__init__.py`. Use
|
|
75
|
+
plain `from module import X`.
|
|
76
|
+
- Concrete classes use `@Factory.register` decorators. To trigger
|
|
77
|
+
registration, each package's `__init__.py` must explicitly import
|
|
78
|
+
every concrete class (e.g.
|
|
79
|
+
`from .chebyshev import ChebyshevPolynomialBackground`). When adding a
|
|
80
|
+
new concrete class, always add its import to the corresponding
|
|
81
|
+
`__init__.py`.
|
|
82
|
+
- Switchable categories (those whose implementation can be swapped at
|
|
83
|
+
runtime via a factory) follow a fixed naming convention on the owner
|
|
84
|
+
(experiment, structure, or analysis): `<category>` (read-only
|
|
85
|
+
property), `<category>_type` (getter + setter),
|
|
86
|
+
`show_supported_<category>_types()`, `show_current_<category>_type()`.
|
|
87
|
+
The owner class owns the type setter and the show methods; the show
|
|
88
|
+
methods delegate to `Factory.show_supported(...)` passing context.
|
|
89
|
+
Every factory-created category must have this full API, even if only
|
|
90
|
+
one implementation exists today.
|
|
91
|
+
- Categories are flat siblings within their owner (datablock or
|
|
92
|
+
analysis). A category must never be a child of another category of a
|
|
93
|
+
different type. Categories can reference each other via IDs, but not
|
|
94
|
+
via parent-child nesting.
|
|
95
|
+
- Every finite, closed set of values (factory tags, experiment axes,
|
|
96
|
+
category descriptors with enumerated choices) must use a `(str, Enum)`
|
|
97
|
+
class. Internal code compares against enum members, never raw strings.
|
|
98
|
+
- Keep `core/` free of domain logic — only base classes and utilities.
|
|
99
|
+
- Don't introduce a new abstraction until there is a concrete second use
|
|
100
|
+
case.
|
|
101
|
+
- Don't add dependencies without asking.
|
|
102
|
+
|
|
103
|
+
## Tutorials
|
|
104
|
+
|
|
105
|
+
- Jupyter notebooks (`docs/docs/tutorials/*.ipynb`) are **generated
|
|
106
|
+
artifacts** — never edit them by hand. Edit only the corresponding
|
|
107
|
+
`*.py` script, then run `pixi run notebook-convert` followed by
|
|
108
|
+
`pixi run notebook-prepare` to regenerate the notebook.
|
|
109
|
+
|
|
110
|
+
## Changes
|
|
111
|
+
|
|
112
|
+
- Before implementing any structural or design change (new categories,
|
|
113
|
+
new factories, switchable-category wiring, new datablocks, CIF
|
|
114
|
+
serialisation changes), read `docs/architecture/architecture.md` to
|
|
115
|
+
understand the current design choices and conventions. Follow the
|
|
116
|
+
documented patterns (factory registration, switchable-category naming,
|
|
117
|
+
metadata classification, etc.) to stay consistent with the rest of the
|
|
118
|
+
codebase. For localised bug fixes or test updates, the rules in this
|
|
119
|
+
file are sufficient.
|
|
120
|
+
- The project is in beta; do not keep legacy code or add deprecation
|
|
121
|
+
warnings. Instead, update tests and tutorials to follow the current
|
|
122
|
+
API.
|
|
123
|
+
- Minimal diffs: don't rewrite working code just to reformat it.
|
|
124
|
+
- Never remove or replace existing functionality as part of a new change
|
|
125
|
+
without explicit confirmation. If a refactor would drop features,
|
|
126
|
+
options, or configurations, highlight every removal and wait for
|
|
127
|
+
approval.
|
|
128
|
+
- Fix only what's asked; flag adjacent issues as comments, don't fix
|
|
129
|
+
them silently.
|
|
130
|
+
- Don't add new features or refactor existing code unless explicitly
|
|
131
|
+
asked.
|
|
132
|
+
- Do not remove TODOs or comments unless the change fully resolves them.
|
|
133
|
+
- When renaming, grep the entire project (code, tests, tutorials, docs).
|
|
134
|
+
- Every change should be atomic and self-contained, small enough to be
|
|
135
|
+
described by a single commit message. Make one change, suggest the
|
|
136
|
+
commit message, then stop and wait for confirmation before starting
|
|
137
|
+
the next change.
|
|
138
|
+
- When in doubt, ask for clarification before making changes.
|
|
139
|
+
|
|
140
|
+
## Workflow
|
|
141
|
+
|
|
142
|
+
- All open issues, design questions, and planned improvements are
|
|
143
|
+
tracked in `docs/architecture/issues_open.md`, ordered by priority.
|
|
144
|
+
When an issue is fully implemented, move it from that file to
|
|
145
|
+
`docs/architecture/issues_closed.md`. When the resolution affects the
|
|
146
|
+
architecture, update the relevant sections of
|
|
147
|
+
`docs/architecture/architecture.md`.
|
|
148
|
+
- After changes, run linting and formatting fixes with `pixi run fix`.
|
|
149
|
+
Do not check what was auto-fixed, just accept the fixes and move on.
|
|
150
|
+
- After changes, run unit tests with `pixi run unit-tests`.
|
|
151
|
+
- After changes, run integration tests with
|
|
152
|
+
`pixi run integration-tests`.
|
|
153
|
+
- After changes, run tutorial tests with `pixi run script-tests`.
|
|
154
|
+
- Suggest a concise commit message (as a code block) after each change
|
|
155
|
+
(less than 72 characters, imperative mood, without prefixing with the
|
|
156
|
+
type of change). E.g.:
|
|
157
|
+
- Add ChebyshevPolynomialBackground class
|
|
158
|
+
- Implement background_type setter on Experiment
|
|
159
|
+
- Standardize switchable-category naming convention
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
module.exports = async ({ github, context, core }) => {
|
|
2
|
+
// Repo context
|
|
3
|
+
const owner = context.repo.owner
|
|
4
|
+
const repo = context.repo.repo
|
|
5
|
+
|
|
6
|
+
// Link to the exact workflow run that detected the conflict
|
|
7
|
+
const runUrl = `${context.serverUrl}/${owner}/${repo}/actions/runs/${context.runId}`
|
|
8
|
+
|
|
9
|
+
// We use a *stable title* so we can find/reuse the same "conflict tracker" issue
|
|
10
|
+
// instead of creating a new issue on every failed run.
|
|
11
|
+
const title = 'Backmerge conflict: master → develop'
|
|
12
|
+
|
|
13
|
+
// Comment/issue body includes the run URL so maintainers can jump straight to logs.
|
|
14
|
+
const body = [
|
|
15
|
+
'Automatic backmerge failed due to merge conflicts.',
|
|
16
|
+
'',
|
|
17
|
+
`Workflow run: ${runUrl}`,
|
|
18
|
+
'',
|
|
19
|
+
'Manual resolution required.',
|
|
20
|
+
].join('\n')
|
|
21
|
+
|
|
22
|
+
// Label applied to the tracker issue (assumed to already exist in the repo).
|
|
23
|
+
const label = '[bot] backmerge'
|
|
24
|
+
|
|
25
|
+
// Search issues by title across *open and closed* issues.
|
|
26
|
+
// Why: if the conflict was resolved previously and the issue was closed,
|
|
27
|
+
// we prefer to reopen it and append a new comment instead of creating duplicates.
|
|
28
|
+
const q = `repo:${owner}/${repo} is:issue in:title "${title}"`
|
|
29
|
+
const search = await github.rest.search.issuesAndPullRequests({
|
|
30
|
+
q,
|
|
31
|
+
per_page: 10,
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
// Pick the first exact-title match (search can return partial matches).
|
|
35
|
+
const existing = search.data.items.find((i) => i.title === title)
|
|
36
|
+
|
|
37
|
+
if (existing) {
|
|
38
|
+
// If a tracker issue exists, reuse it:
|
|
39
|
+
// - reopen it if needed
|
|
40
|
+
// - add a comment with the new run URL
|
|
41
|
+
if (existing.state === 'closed') {
|
|
42
|
+
await github.rest.issues.update({
|
|
43
|
+
owner,
|
|
44
|
+
repo,
|
|
45
|
+
issue_number: existing.number,
|
|
46
|
+
state: 'open',
|
|
47
|
+
})
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
await github.rest.issues.createComment({
|
|
51
|
+
owner,
|
|
52
|
+
repo,
|
|
53
|
+
issue_number: existing.number,
|
|
54
|
+
body,
|
|
55
|
+
})
|
|
56
|
+
|
|
57
|
+
core.notice(`Conflict issue updated: #${existing.number}`)
|
|
58
|
+
return
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// No tracker issue exists yet -> create the first one.
|
|
62
|
+
await github.rest.issues.create({
|
|
63
|
+
owner,
|
|
64
|
+
repo,
|
|
65
|
+
title,
|
|
66
|
+
body,
|
|
67
|
+
labels: [label],
|
|
68
|
+
})
|
|
69
|
+
}
|