essdiffraction 24.11.0__tar.gz → 25.2.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/.copier-answers.yml +4 -4
  2. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/.github/workflows/ci.yml +6 -6
  3. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/.github/workflows/docs.yml +3 -3
  4. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/.github/workflows/nightly_at_main.yml +3 -3
  5. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/.github/workflows/nightly_at_release.yml +4 -4
  6. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/.github/workflows/release.yml +5 -5
  7. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/.github/workflows/test.yml +2 -2
  8. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/.github/workflows/unpinned.yml +4 -4
  9. essdiffraction-25.2.1/.github/workflows/weekly_windows_macos.yml +42 -0
  10. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/.gitignore +4 -1
  11. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/.pre-commit-config.yaml +10 -2
  12. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/LICENSE +1 -1
  13. {essdiffraction-24.11.0/src/essdiffraction.egg-info → essdiffraction-25.2.1}/PKG-INFO +7 -5
  14. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/docs/api-reference/index.md +1 -0
  15. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/docs/conf.py +4 -4
  16. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/docs/user-guide/dream/dream-data-reduction.ipynb +27 -51
  17. essdiffraction-25.2.1/docs/user-guide/dream/dream-visualize-absorption.ipynb +225 -0
  18. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/docs/user-guide/dream/index.md +1 -0
  19. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/docs/user-guide/dream/workflow-widget-dream.ipynb +5 -3
  20. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/docs/user-guide/sns-instruments/POWGEN_data_reduction.ipynb +4 -5
  21. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/pyproject.toml +5 -4
  22. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/requirements/base.in +3 -2
  23. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/requirements/base.txt +48 -31
  24. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/requirements/basetest.txt +8 -12
  25. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/requirements/ci.txt +11 -17
  26. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/requirements/dev.txt +11 -19
  27. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/requirements/docs.txt +29 -32
  28. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/requirements/make_base.py +12 -7
  29. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/requirements/mypy.txt +1 -1
  30. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/requirements/nightly.in +9 -2
  31. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/requirements/nightly.txt +100 -23
  32. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/requirements/static.txt +4 -4
  33. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/requirements/wheels.txt +0 -2
  34. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/diffraction/__init__.py +2 -2
  35. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/dream/__init__.py +3 -1
  36. essdiffraction-25.2.1/src/ess/dream/beamline.py +256 -0
  37. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/dream/data.py +51 -0
  38. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/dream/io/__init__.py +2 -2
  39. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/dream/io/cif.py +23 -6
  40. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/dream/io/geant4.py +110 -12
  41. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/dream/io/nexus.py +4 -1
  42. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/dream/parameters.py +4 -0
  43. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/dream/workflow.py +20 -2
  44. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/powder/conversion.py +101 -5
  45. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/powder/correction.py +3 -3
  46. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/powder/filtering.py +2 -2
  47. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/powder/types.py +51 -4
  48. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/snspowder/powgen/data.py +4 -4
  49. {essdiffraction-24.11.0 → essdiffraction-25.2.1/src/essdiffraction.egg-info}/PKG-INFO +7 -5
  50. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/essdiffraction.egg-info/SOURCES.txt +5 -1
  51. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/essdiffraction.egg-info/requires.txt +3 -2
  52. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/tests/dream/geant4_reduction_test.py +41 -18
  53. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/tests/dream/io/cif_test.py +24 -4
  54. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/tests/package_test.py +2 -2
  55. essdiffraction-25.2.1/tools/dream-make-tof-lookup-table.ipynb +147 -0
  56. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/tox.ini +5 -2
  57. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/.copier-answers.ess.yml +0 -0
  58. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/.github/ISSUE_TEMPLATE/blank.md +0 -0
  59. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/.github/ISSUE_TEMPLATE/high-level-requirement.yml +0 -0
  60. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/.github/dependabot.yml +0 -0
  61. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/.github/workflows/python-version-ci +0 -0
  62. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/.python-version +0 -0
  63. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/CODE_OF_CONDUCT.md +0 -0
  64. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/CONTRIBUTING.md +0 -0
  65. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/MANIFEST.in +0 -0
  66. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/README.md +0 -0
  67. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/conda/meta.yaml +0 -0
  68. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/docs/_static/anaconda-icon.js +0 -0
  69. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/docs/_static/favicon.svg +0 -0
  70. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/docs/_static/logo-dark.svg +0 -0
  71. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/docs/_static/logo.svg +0 -0
  72. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/docs/_templates/class-template.rst +0 -0
  73. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/docs/_templates/doc_version.html +0 -0
  74. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/docs/_templates/module-template.rst +0 -0
  75. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/docs/about/bibliography.rst +0 -0
  76. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/docs/about/index.md +0 -0
  77. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/docs/bibliography.bib +0 -0
  78. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/docs/developer/coding-conventions.md +0 -0
  79. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/docs/developer/dependency-management.md +0 -0
  80. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/docs/developer/getting-started.md +0 -0
  81. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/docs/developer/index.md +0 -0
  82. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/docs/index.md +0 -0
  83. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/docs/user-guide/dream/dream-detector-diagnostics.ipynb +0 -0
  84. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/docs/user-guide/dream/dream-instrument-view.ipynb +0 -0
  85. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/docs/user-guide/index.md +0 -0
  86. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/docs/user-guide/sns-instruments/index.md +0 -0
  87. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/docs/user-guide/sns-instruments/preprocess_files.ipynb +0 -0
  88. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/docs/user-guide/sns-instruments/vanadium_processing.ipynb +0 -0
  89. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/requirements/basetest.in +0 -0
  90. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/requirements/ci.in +0 -0
  91. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/requirements/dev.in +0 -0
  92. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/requirements/docs.in +0 -0
  93. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/requirements/mypy.in +0 -0
  94. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/requirements/static.in +0 -0
  95. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/requirements/test.in +0 -0
  96. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/requirements/test.txt +0 -0
  97. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/requirements/wheels.in +0 -0
  98. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/resources/logo.svg +0 -0
  99. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/setup.cfg +0 -0
  100. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/diffraction/py.typed +0 -0
  101. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/dream/diagnostics.py +0 -0
  102. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/dream/instrument_view.py +0 -0
  103. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/dream/py.typed +0 -0
  104. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/powder/__init__.py +3 -3
  105. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/powder/_util.py +0 -0
  106. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/powder/calibration.py +0 -0
  107. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/powder/grouping.py +0 -0
  108. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/powder/logging.py +0 -0
  109. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/powder/masking.py +0 -0
  110. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/powder/py.typed +0 -0
  111. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/powder/smoothing.py +0 -0
  112. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/powder/transform.py +0 -0
  113. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/snspowder/powgen/__init__.py +0 -0
  114. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/snspowder/powgen/beamline.py +0 -0
  115. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/snspowder/powgen/calibration.py +0 -0
  116. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/snspowder/powgen/instrument_view.py +0 -0
  117. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/snspowder/powgen/peaks.py +0 -0
  118. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/ess/snspowder/powgen/workflow.py +0 -0
  119. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/essdiffraction.egg-info/dependency_links.txt +0 -0
  120. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/src/essdiffraction.egg-info/top_level.txt +0 -0
  121. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/tests/dream/diagnostics_test.py +0 -0
  122. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/tests/dream/instrument_view_test.py +0 -0
  123. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/tests/dream/io/geant4_test.py +0 -0
  124. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/tests/dream/io/nexus_test.py +0 -0
  125. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/tests/powder/conversion_test.py +0 -0
  126. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/tests/powder/correction_test.py +0 -0
  127. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/tests/powder/filtering_test.py +0 -0
  128. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/tests/powder/transform_test.py +0 -0
  129. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/tests/snspowder/powgen/load_test.py +0 -0
  130. {essdiffraction-24.11.0 → essdiffraction-25.2.1}/tests/snspowder/powgen/powgen_reduction_test.py +0 -0
@@ -1,13 +1,13 @@
1
1
  # Changes here will be overwritten by Copier; NEVER EDIT MANUALLY
2
- _commit: 75b9a8f
2
+ _commit: 5c4fd02
3
3
  _src_path: gh:scipp/copier_template
4
4
  description: Diffraction data reduction for the European Spallation Source
5
- max_python: '3.12'
5
+ max_python: '3.13'
6
6
  min_python: '3.10'
7
7
  namespace_package: ess
8
- nightly_deps: scipp,scippnexus,sciline,plopp,scippneutron,essreduce
8
+ nightly_deps: scipp,scippnexus,sciline,plopp,scippneutron,essreduce,tof
9
9
  orgname: scipp
10
10
  prettyname: ESSdiffraction
11
11
  projectname: essdiffraction
12
12
  related_projects: Scipp,ScippNexus,ScippNeutron,Sciline,Plopp,ESSreduce
13
- year: 2024
13
+ year: 2025
@@ -10,7 +10,7 @@ on:
10
10
  jobs:
11
11
  formatting:
12
12
  name: Formatting and static analysis
13
- runs-on: 'ubuntu-22.04'
13
+ runs-on: 'ubuntu-24.04'
14
14
  outputs:
15
15
  min_python: ${{ steps.vars.outputs.min_python }}
16
16
  min_tox_env: ${{ steps.vars.outputs.min_tox_env }}
@@ -19,15 +19,15 @@ jobs:
19
19
  - name: Get Python version for other CI jobs
20
20
  id: vars
21
21
  run: |
22
- echo "min_python=$(cat .github/workflows/python-version-ci)" >> $GITHUB_OUTPUT
23
- echo "min_tox_env=py$(cat .github/workflows/python-version-ci | sed 's/\.//g')" >> $GITHUB_OUTPUT
22
+ echo "min_python=$(< .github/workflows/python-version-ci)" >> "$GITHUB_OUTPUT"
23
+ echo "min_tox_env=py$(sed 's/\.//g' < .github/workflows/python-version-ci)" >> "$GITHUB_OUTPUT"
24
24
  - uses: actions/setup-python@v5
25
25
  with:
26
26
  python-version-file: '.github/workflows/python-version-ci'
27
27
  - uses: pre-commit/action@v3.0.1
28
28
  with:
29
29
  extra_args: --all-files
30
- - uses: pre-commit-ci/lite-action@v1.0.3
30
+ - uses: pre-commit-ci/lite-action@v1.1.0
31
31
  if: always()
32
32
  with:
33
33
  msg: Apply automatic formatting
@@ -37,7 +37,7 @@ jobs:
37
37
  needs: formatting
38
38
  strategy:
39
39
  matrix:
40
- os: ['ubuntu-22.04']
40
+ os: ['ubuntu-24.04']
41
41
  python:
42
42
  - version: '${{needs.formatting.outputs.min_python}}'
43
43
  tox-env: '${{needs.formatting.outputs.min_tox_env}}'
@@ -53,6 +53,6 @@ jobs:
53
53
  uses: ./.github/workflows/docs.yml
54
54
  with:
55
55
  publish: false
56
- linkcheck: ${{ contains(matrix.variant.os, 'ubuntu') && github.ref == 'refs/heads/main' }}
56
+ linkcheck: ${{ github.ref == 'refs/heads/main' }}
57
57
  branch: ${{ github.head_ref == '' && github.ref_name || github.head_ref }}
58
58
  secrets: inherit
@@ -41,7 +41,7 @@ env:
41
41
  jobs:
42
42
  docs:
43
43
  name: Build documentation
44
- runs-on: 'ubuntu-22.04'
44
+ runs-on: 'ubuntu-24.04'
45
45
  env:
46
46
  ESS_PROTECTED_FILESTORE_USERNAME: ${{ secrets.ESS_PROTECTED_FILESTORE_USERNAME }}
47
47
  ESS_PROTECTED_FILESTORE_PASSWORD: ${{ secrets.ESS_PROTECTED_FILESTORE_PASSWORD }}
@@ -58,7 +58,7 @@ jobs:
58
58
  python-version-file: '.github/workflows/python-version-ci'
59
59
  - run: python -m pip install --upgrade pip
60
60
  - run: python -m pip install -r requirements/ci.txt
61
- - run: tox -e releasedocs -- ${VERSION}
61
+ - run: tox -e releasedocs -- "${VERSION}"
62
62
  if: ${{ inputs.version != '' }}
63
63
  - run: tox -e docs
64
64
  if: ${{ inputs.version == '' }}
@@ -69,7 +69,7 @@ jobs:
69
69
  name: docs_html
70
70
  path: html/
71
71
 
72
- - uses: JamesIves/github-pages-deploy-action@v4.6.4
72
+ - uses: JamesIves/github-pages-deploy-action@v4.7.2
73
73
  if: ${{ inputs.publish }}
74
74
  with:
75
75
  branch: gh-pages
@@ -8,21 +8,21 @@ on:
8
8
  jobs:
9
9
  setup:
10
10
  name: Setup variables
11
- runs-on: 'ubuntu-22.04'
11
+ runs-on: 'ubuntu-24.04'
12
12
  outputs:
13
13
  min_python: ${{ steps.vars.outputs.min_python }}
14
14
  steps:
15
15
  - uses: actions/checkout@v4
16
16
  - name: Get Python version for other CI jobs
17
17
  id: vars
18
- run: echo "min_python=$(cat .github/workflows/python-version-ci)" >> $GITHUB_OUTPUT
18
+ run: echo "min_python=$(< .github/workflows/python-version-ci)" >> "$GITHUB_OUTPUT"
19
19
 
20
20
  tests:
21
21
  name: Tests
22
22
  needs: setup
23
23
  strategy:
24
24
  matrix:
25
- os: ['ubuntu-22.04']
25
+ os: ['ubuntu-24.04']
26
26
  python:
27
27
  - version: '${{needs.setup.outputs.min_python}}'
28
28
  tox-env: 'nightly'
@@ -8,7 +8,7 @@ on:
8
8
  jobs:
9
9
  setup:
10
10
  name: Setup variables
11
- runs-on: 'ubuntu-22.04'
11
+ runs-on: 'ubuntu-24.04'
12
12
  outputs:
13
13
  min_python: ${{ steps.vars.outputs.min_python }}
14
14
  release_tag: ${{ steps.release.outputs.release_tag }}
@@ -18,17 +18,17 @@ jobs:
18
18
  fetch-depth: 0 # history required so we can determine latest release tag
19
19
  - name: Get last release tag from git
20
20
  id: release
21
- run: echo "release_tag=$(git describe --tags --abbrev=0 --match '[0-9]*.[0-9]*.[0-9]*')" >> $GITHUB_OUTPUT
21
+ run: echo "release_tag=$(git describe --tags --abbrev=0 --match '[0-9]*.[0-9]*.[0-9]*')" >> "$GITHUB_OUTPUT"
22
22
  - name: Get Python version for other CI jobs
23
23
  id: vars
24
- run: echo "min_python=$(cat .github/workflows/python-version-ci)" >> $GITHUB_OUTPUT
24
+ run: echo "min_python=$(cat .github/workflows/python-version-ci)" >> "$GITHUB_OUTPUT"
25
25
 
26
26
  tests:
27
27
  name: Tests
28
28
  needs: setup
29
29
  strategy:
30
30
  matrix:
31
- os: ['ubuntu-22.04']
31
+ os: ['ubuntu-24.04']
32
32
  python:
33
33
  - version: '${{needs.setup.outputs.min_python}}'
34
34
  tox-env: 'nightly'
@@ -12,7 +12,7 @@ defaults:
12
12
  jobs:
13
13
  build_conda:
14
14
  name: Conda build
15
- runs-on: 'ubuntu-22.04'
15
+ runs-on: 'ubuntu-24.04'
16
16
 
17
17
  steps:
18
18
  - uses: actions/checkout@v4
@@ -35,7 +35,7 @@ jobs:
35
35
 
36
36
  build_wheels:
37
37
  name: Wheels
38
- runs-on: 'ubuntu-22.04'
38
+ runs-on: 'ubuntu-24.04'
39
39
 
40
40
  steps:
41
41
  - uses: actions/checkout@v4
@@ -61,7 +61,7 @@ jobs:
61
61
  upload_pypi:
62
62
  name: Deploy PyPI
63
63
  needs: [build_wheels, build_conda]
64
- runs-on: 'ubuntu-22.04'
64
+ runs-on: 'ubuntu-24.04'
65
65
  environment: release
66
66
  permissions:
67
67
  id-token: write
@@ -73,7 +73,7 @@ jobs:
73
73
  upload_conda:
74
74
  name: Deploy Conda
75
75
  needs: [build_wheels, build_conda]
76
- runs-on: 'ubuntu-22.04'
76
+ runs-on: 'ubuntu-24.04'
77
77
  if: github.event_name == 'release' && github.event.action == 'published'
78
78
 
79
79
  steps:
@@ -97,7 +97,7 @@ jobs:
97
97
  assets:
98
98
  name: Upload docs
99
99
  needs: docs
100
- runs-on: 'ubuntu-22.04'
100
+ runs-on: 'ubuntu-24.04'
101
101
  permissions:
102
102
  contents: write # This is needed so that the action can upload the asset
103
103
  steps:
@@ -4,7 +4,7 @@ on:
4
4
  workflow_dispatch:
5
5
  inputs:
6
6
  os-variant:
7
- default: 'ubuntu-22.04'
7
+ default: 'ubuntu-24.04'
8
8
  type: string
9
9
  python-version:
10
10
  type: string
@@ -23,7 +23,7 @@ on:
23
23
  workflow_call:
24
24
  inputs:
25
25
  os-variant:
26
- default: 'ubuntu-22.04'
26
+ default: 'ubuntu-24.04'
27
27
  type: string
28
28
  python-version:
29
29
  type: string
@@ -8,7 +8,7 @@ on:
8
8
  jobs:
9
9
  setup:
10
10
  name: Setup variables
11
- runs-on: 'ubuntu-22.04'
11
+ runs-on: 'ubuntu-24.04'
12
12
  outputs:
13
13
  min_python: ${{ steps.vars.outputs.min_python }}
14
14
  release_tag: ${{ steps.release.outputs.release_tag }}
@@ -18,17 +18,17 @@ jobs:
18
18
  fetch-depth: 0 # history required so we can determine latest release tag
19
19
  - name: Get last release tag from git
20
20
  id: release
21
- run: echo "release_tag=$(git describe --tags --abbrev=0 --match '[0-9]*.[0-9]*.[0-9]*')" >> $GITHUB_OUTPUT
21
+ run: echo "release_tag=$(git describe --tags --abbrev=0 --match '[0-9]*.[0-9]*.[0-9]*')" >> "$GITHUB_OUTPUT"
22
22
  - name: Get Python version for other CI jobs
23
23
  id: vars
24
- run: echo "min_python=$(cat .github/workflows/python-version-ci)" >> $GITHUB_OUTPUT
24
+ run: echo "min_python=$(cat .github/workflows/python-version-ci)" >> "$GITHUB_OUTPUT"
25
25
 
26
26
  tests:
27
27
  name: Tests
28
28
  needs: setup
29
29
  strategy:
30
30
  matrix:
31
- os: ['ubuntu-22.04']
31
+ os: ['ubuntu-24.04']
32
32
  python:
33
33
  - version: '${{needs.setup.outputs.min_python}}'
34
34
  tox-env: 'unpinned'
@@ -0,0 +1,42 @@
1
+ name: Windows and MacOS weekly tests
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ schedule:
6
+ - cron: '0 2 * * 1'
7
+
8
+ jobs:
9
+ pytox:
10
+ name: Python and Tox env
11
+ runs-on: 'ubuntu-24.04'
12
+ outputs:
13
+ min_python: ${{ steps.vars.outputs.min_python }}
14
+ min_tox_env: ${{ steps.vars.outputs.min_tox_env }}
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+ - name: Get Python version for other CI jobs
18
+ id: vars
19
+ run: |
20
+ echo "min_python=$(cat .github/workflows/python-version-ci)" >> $GITHUB_OUTPUT
21
+ echo "min_tox_env=py$(cat .github/workflows/python-version-ci | sed 's/\.//g')" >> $GITHUB_OUTPUT
22
+ tests:
23
+ name: Tests
24
+ needs: pytox
25
+ strategy:
26
+ matrix:
27
+ os: ['macos-latest', 'windows-latest']
28
+ python:
29
+ - version: '${{needs.pytox.outputs.min_python}}'
30
+ tox-env: '${{needs.pytox.outputs.min_tox_env}}'
31
+ uses: ./.github/workflows/test.yml
32
+ with:
33
+ os-variant: ${{ matrix.os }}
34
+ python-version: ${{ matrix.python.version }}
35
+ tox-env: ${{ matrix.python.tox-env }}
36
+
37
+ docs:
38
+ needs: tests
39
+ uses: ./.github/workflows/docs.yml
40
+ with:
41
+ publish: false
42
+ branch: ${{ github.head_ref == '' && github.ref_name || github.head_ref }}
@@ -4,7 +4,8 @@ dist
4
4
  html
5
5
  .tox
6
6
  *.egg-info
7
- uv.lock # we lock dependencies with pip-compile, not uv
7
+ # we lock dependencies with pip-compile, not uv
8
+ uv.lock
8
9
 
9
10
  *.sw?
10
11
 
@@ -42,3 +43,5 @@ docs/generated/
42
43
  *.rcif
43
44
  *.ort
44
45
  *.zip
46
+ *.sqw
47
+ *.nxspe
@@ -1,8 +1,10 @@
1
1
  repos:
2
2
  - repo: https://github.com/pre-commit/pre-commit-hooks
3
- rev: v4.6.0
3
+ rev: v5.0.0
4
4
  hooks:
5
5
  - id: check-added-large-files
6
+ - id: check-case-conflict
7
+ - id: check-illegal-windows-names
6
8
  - id: check-json
7
9
  exclude: asv.conf.json
8
10
  - id: check-merge-conflict
@@ -21,7 +23,7 @@ repos:
21
23
  args: [ "--drop-empty-cells",
22
24
  "--extra-keys 'metadata.language_info.version cell.metadata.jp-MarkdownHeadingCollapsed cell.metadata.pycharm'" ]
23
25
  - repo: https://github.com/astral-sh/ruff-pre-commit
24
- rev: v0.6.2
26
+ rev: v0.8.0
25
27
  hooks:
26
28
  - id: ruff
27
29
  args: [ --fix ]
@@ -44,3 +46,9 @@ repos:
44
46
  - id: rst-directive-colons
45
47
  - id: rst-inline-touching-normal
46
48
  - id: text-unicode-replacement-char
49
+ - repo: https://github.com/rhysd/actionlint
50
+ rev: v1.7.3
51
+ hooks:
52
+ - id: actionlint
53
+ # Disable because of false-positive SC2046
54
+ args: ["-shellcheck="]
@@ -1,6 +1,6 @@
1
1
  BSD 3-Clause License
2
2
 
3
- Copyright (c) 2024, Scipp contributors (https://github.com/scipp)
3
+ Copyright (c) 2025, Scipp contributors (https://github.com/scipp)
4
4
  All rights reserved.
5
5
 
6
6
  Redistribution and use in source and binary forms, with or without
@@ -1,11 +1,11 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: essdiffraction
3
- Version: 24.11.0
3
+ Version: 25.2.1
4
4
  Summary: Diffraction data reduction for the European Spallation Source
5
5
  Author: Scipp contributors
6
6
  License: BSD 3-Clause License
7
7
 
8
- Copyright (c) 2024, Scipp contributors (https://github.com/scipp)
8
+ Copyright (c) 2025, Scipp contributors (https://github.com/scipp)
9
9
  All rights reserved.
10
10
 
11
11
  Redistribution and use in source and binary forms, with or without
@@ -45,21 +45,23 @@ Classifier: Programming Language :: Python :: 3 :: Only
45
45
  Classifier: Programming Language :: Python :: 3.10
46
46
  Classifier: Programming Language :: Python :: 3.11
47
47
  Classifier: Programming Language :: Python :: 3.12
48
+ Classifier: Programming Language :: Python :: 3.13
48
49
  Classifier: Topic :: Scientific/Engineering
49
50
  Classifier: Typing :: Typed
50
51
  Requires-Python: >=3.10
51
52
  Description-Content-Type: text/markdown
52
53
  License-File: LICENSE
53
54
  Requires-Dist: dask
54
- Requires-Dist: essreduce>=24.11.3
55
+ Requires-Dist: essreduce>=25.02.4
55
56
  Requires-Dist: graphviz
56
57
  Requires-Dist: numpy
57
58
  Requires-Dist: plopp
58
59
  Requires-Dist: pythreejs
59
60
  Requires-Dist: sciline>=24.06.0
60
61
  Requires-Dist: scipp>=24.09.1
61
- Requires-Dist: scippneutron>=24.11.0
62
+ Requires-Dist: scippneutron>=25.02.0
62
63
  Requires-Dist: scippnexus>=23.12.0
64
+ Requires-Dist: tof>=25.01.2
63
65
  Provides-Extra: test
64
66
  Requires-Dist: pandas; extra == "test"
65
67
  Requires-Dist: pooch; extra == "test"
@@ -26,6 +26,7 @@
26
26
  filtering
27
27
  grouping
28
28
  smoothing
29
+ transform
29
30
  types
30
31
  ```
31
32
 
@@ -1,5 +1,5 @@
1
1
  # SPDX-License-Identifier: BSD-3-Clause
2
- # Copyright (c) 2024 Scipp contributors (https://github.com/scipp)
2
+ # Copyright (c) 2025 Scipp contributors (https://github.com/scipp)
3
3
 
4
4
  import doctest
5
5
  import os
@@ -14,9 +14,9 @@ sys.path.insert(0, os.path.abspath("."))
14
14
  logger = logging.getLogger(__name__)
15
15
 
16
16
  # General information about the project.
17
- project = "ESSdiffraction"
18
- copyright = "2024 Scipp contributors"
19
- author = "Scipp contributors"
17
+ project = 'ESSdiffraction'
18
+ copyright = '2025 Scipp contributors'
19
+ author = 'Scipp contributors'
20
20
 
21
21
  html_show_sourcelink = True
22
22
 
@@ -20,7 +20,6 @@
20
20
  "outputs": [],
21
21
  "source": [
22
22
  "import scipp as sc\n",
23
- "\n",
24
23
  "from ess import dream, powder\n",
25
24
  "import ess.dream.data # noqa: F401\n",
26
25
  "from ess.powder.types import *"
@@ -52,7 +51,7 @@
52
51
  "metadata": {},
53
52
  "source": [
54
53
  "We then need to set the missing parameters which are specific to each experiment\n",
55
- "(the keys are types defined in [essdiffraction.powder.types](../generated/modules/ess.diffraction.powder.types.rst)):"
54
+ "(the keys are types defined in [essdiffraction.powder.types](../../generated/modules/ess.powder.types.rst)):"
56
55
  ]
57
56
  },
58
57
  {
@@ -71,14 +70,14 @@
71
70
  "workflow[UncertaintyBroadcastMode] = UncertaintyBroadcastMode.drop\n",
72
71
  "# Edges for binning in d-spacing\n",
73
72
  "workflow[DspacingBins] = sc.linspace(\"dspacing\", 0.0, 2.3434, 201, unit=\"angstrom\")\n",
74
- "# Mask in time-of-flight to crop to valid range\n",
75
- "workflow[TofMask] = lambda x: (x < sc.scalar(0.0, unit=\"ns\")) | (\n",
76
- " x > sc.scalar(86e6, unit=\"ns\")\n",
77
- ")\n",
73
+ "# Empty masks by default\n",
74
+ "workflow[TofMask] = None\n",
78
75
  "workflow[TwoThetaMask] = None\n",
79
76
  "workflow[WavelengthMask] = None\n",
80
77
  "# No pixel masks\n",
81
- "workflow = powder.with_pixel_mask_filenames(workflow, [])"
78
+ "workflow = powder.with_pixel_mask_filenames(workflow, [])\n",
79
+ "# Time-of-flight lookup table\n",
80
+ "workflow[TimeOfFlightLookupTableFilename] = dream.data.tof_lookup_table_high_flux()"
82
81
  ]
83
82
  },
84
83
  {
@@ -86,7 +85,7 @@
86
85
  "id": "6",
87
86
  "metadata": {},
88
87
  "source": [
89
- "## Use the workflow\n",
88
+ "## Use the reduction workflow\n",
90
89
  "\n",
91
90
  "We can visualize the graph for computing the final normalized result for intensity as a function of time-of-flight:"
92
91
  ]
@@ -152,7 +151,7 @@
152
151
  "in the documentation of ESSdiffraction.\n",
153
152
  "See https://scipp.github.io/essdiffraction/\n",
154
153
  "\"\"\"\n",
155
- "cif_data.save('reduced.cif')"
154
+ "cif_data.save(\"reduced.cif\")"
156
155
  ]
157
156
  },
158
157
  {
@@ -192,9 +191,9 @@
192
191
  "outputs": [],
193
192
  "source": [
194
193
  "two_theta = sc.linspace(\"two_theta\", 0.8, 2.4, 301, unit=\"rad\")\n",
195
- "intermediates[MaskedData[SampleRun]].hist(two_theta=two_theta, wavelength=300).plot(\n",
196
- " norm=\"log\"\n",
197
- ")"
194
+ "intermediates[MaskedData[SampleRun]].hist(\n",
195
+ " two_theta=two_theta, wavelength=300\n",
196
+ ").plot(norm=\"log\")"
198
197
  ]
199
198
  },
200
199
  {
@@ -216,7 +215,7 @@
216
215
  "outputs": [],
217
216
  "source": [
218
217
  "workflow[TwoThetaBins] = sc.linspace(\n",
219
- " dim=\"two_theta\", unit=\"rad\", start=0.8, stop=2.4, num=17\n",
218
+ " dim=\"two_theta\", unit=\"rad\", start=0.8, stop=2.4, num=201\n",
220
219
  ")"
221
220
  ]
222
221
  },
@@ -237,31 +236,13 @@
237
236
  "id": "19",
238
237
  "metadata": {},
239
238
  "outputs": [],
240
- "source": [
241
- "angle = sc.midpoints(grouped_dspacing.coords[\"two_theta\"])\n",
242
- "sc.plot(\n",
243
- " {\n",
244
- " f\"{angle[group].value:.3f} {angle[group].unit}\": grouped_dspacing[\n",
245
- " \"two_theta\", group\n",
246
- " ].hist()\n",
247
- " for group in range(2, 6)\n",
248
- " }\n",
249
- ")"
250
- ]
251
- },
252
- {
253
- "cell_type": "code",
254
- "execution_count": null,
255
- "id": "20",
256
- "metadata": {},
257
- "outputs": [],
258
239
  "source": [
259
240
  "grouped_dspacing.hist().plot(norm=\"log\")"
260
241
  ]
261
242
  },
262
243
  {
263
244
  "cell_type": "markdown",
264
- "id": "21",
245
+ "id": "20",
265
246
  "metadata": {},
266
247
  "source": [
267
248
  "## Normalizing by monitor\n",
@@ -283,7 +264,7 @@
283
264
  {
284
265
  "cell_type": "code",
285
266
  "execution_count": null,
286
- "id": "22",
267
+ "id": "21",
287
268
  "metadata": {},
288
269
  "outputs": [],
289
270
  "source": [
@@ -292,7 +273,7 @@
292
273
  },
293
274
  {
294
275
  "cell_type": "markdown",
295
- "id": "23",
276
+ "id": "22",
296
277
  "metadata": {},
297
278
  "source": [
298
279
  "In addition to the parameters used before, we also need to provide filenames for monitor data and a position of the monitor as that is not saved in the simulation files:"
@@ -301,14 +282,14 @@
301
282
  {
302
283
  "cell_type": "code",
303
284
  "execution_count": null,
304
- "id": "24",
285
+ "id": "23",
305
286
  "metadata": {},
306
287
  "outputs": [],
307
288
  "source": [
308
289
  "workflow[MonitorFilename[SampleRun]] = dream.data.simulated_monitor_diamond_sample()\n",
309
290
  "workflow[MonitorFilename[VanadiumRun]] = dream.data.simulated_monitor_vanadium_sample()\n",
310
291
  "workflow[MonitorFilename[BackgroundRun]] = dream.data.simulated_monitor_empty_can()\n",
311
- "workflow[CaveMonitorPosition] = sc.vector([0.0, 0.0, -4220.0], unit='mm')\n",
292
+ "workflow[CaveMonitorPosition] = sc.vector([0.0, 0.0, -4220.0], unit=\"mm\")\n",
312
293
  "\n",
313
294
  "# These are the same as at the top of the notebook:\n",
314
295
  "workflow[Filename[SampleRun]] = dream.data.simulated_diamond_sample()\n",
@@ -318,18 +299,17 @@
318
299
  "workflow[NeXusDetectorName] = \"mantle\"\n",
319
300
  "workflow[UncertaintyBroadcastMode] = UncertaintyBroadcastMode.drop\n",
320
301
  "workflow[DspacingBins] = sc.linspace(\"dspacing\", 0.0, 2.3434, 201, unit=\"angstrom\")\n",
321
- "workflow[TofMask] = lambda x: (x < sc.scalar(0.0, unit=\"ns\")) | (\n",
322
- " x > sc.scalar(86e6, unit=\"ns\")\n",
323
- ")\n",
302
+ "workflow[TofMask] = None\n",
324
303
  "workflow[TwoThetaMask] = None\n",
325
304
  "workflow[WavelengthMask] = None\n",
326
- "workflow = powder.with_pixel_mask_filenames(workflow, [])"
305
+ "workflow = powder.with_pixel_mask_filenames(workflow, [])\n",
306
+ "workflow[TimeOfFlightLookupTableFilename] = dream.data.tof_lookup_table_high_flux()"
327
307
  ]
328
308
  },
329
309
  {
330
310
  "cell_type": "code",
331
311
  "execution_count": null,
332
- "id": "25",
312
+ "id": "24",
333
313
  "metadata": {},
334
314
  "outputs": [],
335
315
  "source": [
@@ -339,7 +319,7 @@
339
319
  {
340
320
  "cell_type": "code",
341
321
  "execution_count": null,
342
- "id": "26",
322
+ "id": "25",
343
323
  "metadata": {},
344
324
  "outputs": [],
345
325
  "source": [
@@ -352,7 +332,7 @@
352
332
  {
353
333
  "cell_type": "code",
354
334
  "execution_count": null,
355
- "id": "27",
335
+ "id": "26",
356
336
  "metadata": {},
357
337
  "outputs": [],
358
338
  "source": [
@@ -361,7 +341,7 @@
361
341
  },
362
342
  {
363
343
  "cell_type": "markdown",
364
- "id": "28",
344
+ "id": "27",
365
345
  "metadata": {},
366
346
  "source": [
367
347
  "Comparing the final, normalized result shows that it agrees with the data that was normalized by proton-charge:"
@@ -370,14 +350,11 @@
370
350
  {
371
351
  "cell_type": "code",
372
352
  "execution_count": null,
373
- "id": "29",
353
+ "id": "28",
374
354
  "metadata": {},
375
355
  "outputs": [],
376
356
  "source": [
377
- "sc.plot({\n",
378
- " 'By proton charge': histogram,\n",
379
- " 'By monitor': normalized_by_monitor.hist()\n",
380
- "})"
357
+ "sc.plot({\"By proton charge\": histogram, \"By monitor\": normalized_by_monitor.hist()})"
381
358
  ]
382
359
  }
383
360
  ],
@@ -396,8 +373,7 @@
396
373
  "mimetype": "text/x-python",
397
374
  "name": "python",
398
375
  "nbconvert_exporter": "python",
399
- "pygments_lexer": "ipython3",
400
- "version": "3.10.14"
376
+ "pygments_lexer": "ipython3"
401
377
  }
402
378
  },
403
379
  "nbformat": 4,