essreduce 25.4.0__tar.gz → 25.4.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 (141) hide show
  1. {essreduce-25.4.0/src/essreduce.egg-info → essreduce-25.4.1}/PKG-INFO +2 -2
  2. {essreduce-25.4.0 → essreduce-25.4.1}/pyproject.toml +1 -1
  3. {essreduce-25.4.0 → essreduce-25.4.1}/requirements/base.in +1 -3
  4. {essreduce-25.4.0 → essreduce-25.4.1}/requirements/base.txt +8 -8
  5. {essreduce-25.4.0 → essreduce-25.4.1}/requirements/basetest.txt +5 -5
  6. {essreduce-25.4.0 → essreduce-25.4.1}/requirements/ci.txt +1 -1
  7. {essreduce-25.4.0 → essreduce-25.4.1}/requirements/dev.txt +2 -2
  8. {essreduce-25.4.0 → essreduce-25.4.1}/requirements/docs.txt +2 -2
  9. {essreduce-25.4.0 → essreduce-25.4.1}/requirements/nightly.txt +7 -6
  10. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/nexus/types.py +8 -14
  11. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/time_of_flight/interpolator_numba.py +12 -9
  12. {essreduce-25.4.0 → essreduce-25.4.1/src/essreduce.egg-info}/PKG-INFO +2 -2
  13. {essreduce-25.4.0 → essreduce-25.4.1}/src/essreduce.egg-info/requires.txt +1 -1
  14. {essreduce-25.4.0 → essreduce-25.4.1}/tests/time_of_flight/interpolator_test.py +21 -0
  15. {essreduce-25.4.0 → essreduce-25.4.1}/.copier-answers.ess.yml +0 -0
  16. {essreduce-25.4.0 → essreduce-25.4.1}/.copier-answers.yml +0 -0
  17. {essreduce-25.4.0 → essreduce-25.4.1}/.github/ISSUE_TEMPLATE/blank.md +0 -0
  18. {essreduce-25.4.0 → essreduce-25.4.1}/.github/ISSUE_TEMPLATE/high-level-requirement.yml +0 -0
  19. {essreduce-25.4.0 → essreduce-25.4.1}/.github/dependabot.yml +0 -0
  20. {essreduce-25.4.0 → essreduce-25.4.1}/.github/workflows/ci.yml +0 -0
  21. {essreduce-25.4.0 → essreduce-25.4.1}/.github/workflows/docs.yml +0 -0
  22. {essreduce-25.4.0 → essreduce-25.4.1}/.github/workflows/nightly_at_main.yml +0 -0
  23. {essreduce-25.4.0 → essreduce-25.4.1}/.github/workflows/nightly_at_release.yml +0 -0
  24. {essreduce-25.4.0 → essreduce-25.4.1}/.github/workflows/python-version-ci +0 -0
  25. {essreduce-25.4.0 → essreduce-25.4.1}/.github/workflows/release.yml +0 -0
  26. {essreduce-25.4.0 → essreduce-25.4.1}/.github/workflows/test.yml +0 -0
  27. {essreduce-25.4.0 → essreduce-25.4.1}/.github/workflows/unpinned.yml +0 -0
  28. {essreduce-25.4.0 → essreduce-25.4.1}/.github/workflows/weekly_windows_macos.yml +0 -0
  29. {essreduce-25.4.0 → essreduce-25.4.1}/.gitignore +0 -0
  30. {essreduce-25.4.0 → essreduce-25.4.1}/.pre-commit-config.yaml +0 -0
  31. {essreduce-25.4.0 → essreduce-25.4.1}/.python-version +0 -0
  32. {essreduce-25.4.0 → essreduce-25.4.1}/CODE_OF_CONDUCT.md +0 -0
  33. {essreduce-25.4.0 → essreduce-25.4.1}/CONTRIBUTING.md +0 -0
  34. {essreduce-25.4.0 → essreduce-25.4.1}/LICENSE +0 -0
  35. {essreduce-25.4.0 → essreduce-25.4.1}/MANIFEST.in +0 -0
  36. {essreduce-25.4.0 → essreduce-25.4.1}/README.md +0 -0
  37. {essreduce-25.4.0 → essreduce-25.4.1}/conda/meta.yaml +0 -0
  38. {essreduce-25.4.0 → essreduce-25.4.1}/docs/_static/anaconda-icon.js +0 -0
  39. {essreduce-25.4.0 → essreduce-25.4.1}/docs/_static/favicon.svg +0 -0
  40. {essreduce-25.4.0 → essreduce-25.4.1}/docs/_static/logo-dark.svg +0 -0
  41. {essreduce-25.4.0 → essreduce-25.4.1}/docs/_static/logo.svg +0 -0
  42. {essreduce-25.4.0 → essreduce-25.4.1}/docs/_templates/class-template.rst +0 -0
  43. {essreduce-25.4.0 → essreduce-25.4.1}/docs/_templates/doc_version.html +0 -0
  44. {essreduce-25.4.0 → essreduce-25.4.1}/docs/_templates/module-template.rst +0 -0
  45. {essreduce-25.4.0 → essreduce-25.4.1}/docs/about/index.md +0 -0
  46. {essreduce-25.4.0 → essreduce-25.4.1}/docs/api-reference/index.md +0 -0
  47. {essreduce-25.4.0 → essreduce-25.4.1}/docs/conf.py +0 -0
  48. {essreduce-25.4.0 → essreduce-25.4.1}/docs/developer/coding-conventions.md +0 -0
  49. {essreduce-25.4.0 → essreduce-25.4.1}/docs/developer/dependency-management.md +0 -0
  50. {essreduce-25.4.0 → essreduce-25.4.1}/docs/developer/getting-started.md +0 -0
  51. {essreduce-25.4.0 → essreduce-25.4.1}/docs/developer/gui.ipynb +0 -0
  52. {essreduce-25.4.0 → essreduce-25.4.1}/docs/developer/index.md +0 -0
  53. {essreduce-25.4.0 → essreduce-25.4.1}/docs/index.md +0 -0
  54. {essreduce-25.4.0 → essreduce-25.4.1}/docs/user-guide/index.md +0 -0
  55. {essreduce-25.4.0 → essreduce-25.4.1}/docs/user-guide/installation.md +0 -0
  56. {essreduce-25.4.0 → essreduce-25.4.1}/docs/user-guide/reduction-workflow-guidelines.md +0 -0
  57. {essreduce-25.4.0 → essreduce-25.4.1}/docs/user-guide/tof/dream.ipynb +0 -0
  58. {essreduce-25.4.0 → essreduce-25.4.1}/docs/user-guide/tof/frame-unwrapping.ipynb +0 -0
  59. {essreduce-25.4.0 → essreduce-25.4.1}/docs/user-guide/tof/index.md +0 -0
  60. {essreduce-25.4.0 → essreduce-25.4.1}/docs/user-guide/tof/wfm.ipynb +0 -0
  61. {essreduce-25.4.0 → essreduce-25.4.1}/docs/user-guide/widget.md +0 -0
  62. {essreduce-25.4.0 → essreduce-25.4.1}/requirements/basetest.in +0 -0
  63. {essreduce-25.4.0 → essreduce-25.4.1}/requirements/ci.in +0 -0
  64. {essreduce-25.4.0 → essreduce-25.4.1}/requirements/dev.in +0 -0
  65. {essreduce-25.4.0 → essreduce-25.4.1}/requirements/docs.in +0 -0
  66. {essreduce-25.4.0 → essreduce-25.4.1}/requirements/make_base.py +0 -0
  67. {essreduce-25.4.0 → essreduce-25.4.1}/requirements/mypy.in +0 -0
  68. {essreduce-25.4.0 → essreduce-25.4.1}/requirements/mypy.txt +0 -0
  69. {essreduce-25.4.0 → essreduce-25.4.1}/requirements/nightly.in +0 -0
  70. {essreduce-25.4.0 → essreduce-25.4.1}/requirements/static.in +0 -0
  71. {essreduce-25.4.0 → essreduce-25.4.1}/requirements/static.txt +0 -0
  72. {essreduce-25.4.0 → essreduce-25.4.1}/requirements/test.in +0 -0
  73. {essreduce-25.4.0 → essreduce-25.4.1}/requirements/test.txt +0 -0
  74. {essreduce-25.4.0 → essreduce-25.4.1}/requirements/wheels.in +0 -0
  75. {essreduce-25.4.0 → essreduce-25.4.1}/requirements/wheels.txt +0 -0
  76. {essreduce-25.4.0 → essreduce-25.4.1}/resources/logo.svg +0 -0
  77. {essreduce-25.4.0 → essreduce-25.4.1}/setup.cfg +0 -0
  78. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/__init__.py +0 -0
  79. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/data.py +0 -0
  80. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/live/__init__.py +0 -0
  81. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/live/raw.py +0 -0
  82. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/live/roi.py +0 -0
  83. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/live/workflow.py +0 -0
  84. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/logging.py +0 -0
  85. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/nexus/__init__.py +0 -0
  86. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/nexus/_nexus_loader.py +0 -0
  87. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/nexus/json_generator.py +0 -0
  88. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/nexus/json_nexus.py +0 -0
  89. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/nexus/workflow.py +0 -0
  90. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/parameter.py +0 -0
  91. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/py.typed +0 -0
  92. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/scripts/grow_nexus.py +0 -0
  93. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/streaming.py +0 -0
  94. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/time_of_flight/__init__.py +0 -0
  95. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/time_of_flight/eto_to_tof.py +0 -0
  96. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/time_of_flight/fakes.py +0 -0
  97. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/time_of_flight/interpolator_scipy.py +0 -0
  98. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/time_of_flight/simulation.py +0 -0
  99. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/time_of_flight/to_events.py +0 -0
  100. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/time_of_flight/types.py +0 -0
  101. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/ui.py +0 -0
  102. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/uncertainty.py +0 -0
  103. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/widgets/__init__.py +0 -0
  104. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/widgets/_base.py +0 -0
  105. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/widgets/_binedges_widget.py +0 -0
  106. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/widgets/_bounds_widget.py +0 -0
  107. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/widgets/_config.py +0 -0
  108. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/widgets/_filename_widget.py +0 -0
  109. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/widgets/_linspace_widget.py +0 -0
  110. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/widgets/_optional_widget.py +0 -0
  111. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/widgets/_spinner.py +0 -0
  112. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/widgets/_string_widget.py +0 -0
  113. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/widgets/_switchable_widget.py +0 -0
  114. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/widgets/_vector_widget.py +0 -0
  115. {essreduce-25.4.0 → essreduce-25.4.1}/src/ess/reduce/workflow.py +0 -0
  116. {essreduce-25.4.0 → essreduce-25.4.1}/src/essreduce.egg-info/SOURCES.txt +0 -0
  117. {essreduce-25.4.0 → essreduce-25.4.1}/src/essreduce.egg-info/dependency_links.txt +0 -0
  118. {essreduce-25.4.0 → essreduce-25.4.1}/src/essreduce.egg-info/entry_points.txt +0 -0
  119. {essreduce-25.4.0 → essreduce-25.4.1}/src/essreduce.egg-info/top_level.txt +0 -0
  120. {essreduce-25.4.0 → essreduce-25.4.1}/tests/live/raw_test.py +0 -0
  121. {essreduce-25.4.0 → essreduce-25.4.1}/tests/live/roi_test.py +0 -0
  122. {essreduce-25.4.0 → essreduce-25.4.1}/tests/nexus/json_generator_test.py +0 -0
  123. {essreduce-25.4.0 → essreduce-25.4.1}/tests/nexus/json_nexus_examples/array_dataset.json +0 -0
  124. {essreduce-25.4.0 → essreduce-25.4.1}/tests/nexus/json_nexus_examples/dataset.json +0 -0
  125. {essreduce-25.4.0 → essreduce-25.4.1}/tests/nexus/json_nexus_examples/detector.json +0 -0
  126. {essreduce-25.4.0 → essreduce-25.4.1}/tests/nexus/json_nexus_examples/entry.json +0 -0
  127. {essreduce-25.4.0 → essreduce-25.4.1}/tests/nexus/json_nexus_examples/event_data.json +0 -0
  128. {essreduce-25.4.0 → essreduce-25.4.1}/tests/nexus/json_nexus_examples/instrument.json +0 -0
  129. {essreduce-25.4.0 → essreduce-25.4.1}/tests/nexus/json_nexus_examples/log.json +0 -0
  130. {essreduce-25.4.0 → essreduce-25.4.1}/tests/nexus/json_nexus_test.py +0 -0
  131. {essreduce-25.4.0 → essreduce-25.4.1}/tests/nexus/nexus_loader_test.py +0 -0
  132. {essreduce-25.4.0 → essreduce-25.4.1}/tests/nexus/workflow_test.py +0 -0
  133. {essreduce-25.4.0 → essreduce-25.4.1}/tests/package_test.py +0 -0
  134. {essreduce-25.4.0 → essreduce-25.4.1}/tests/scripts/test_grow_nexus.py +0 -0
  135. {essreduce-25.4.0 → essreduce-25.4.1}/tests/streaming_test.py +0 -0
  136. {essreduce-25.4.0 → essreduce-25.4.1}/tests/time_of_flight/to_events_test.py +0 -0
  137. {essreduce-25.4.0 → essreduce-25.4.1}/tests/time_of_flight/unwrap_test.py +0 -0
  138. {essreduce-25.4.0 → essreduce-25.4.1}/tests/time_of_flight/wfm_test.py +0 -0
  139. {essreduce-25.4.0 → essreduce-25.4.1}/tests/uncertainty_test.py +0 -0
  140. {essreduce-25.4.0 → essreduce-25.4.1}/tests/widget_test.py +0 -0
  141. {essreduce-25.4.0 → essreduce-25.4.1}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: essreduce
3
- Version: 25.4.0
3
+ Version: 25.4.1
4
4
  Summary: Common data reduction tools for the ESS facility
5
5
  Author: Scipp contributors
6
6
  License: BSD 3-Clause License
@@ -51,7 +51,7 @@ Classifier: Typing :: Typed
51
51
  Requires-Python: >=3.10
52
52
  Description-Content-Type: text/markdown
53
53
  License-File: LICENSE
54
- Requires-Dist: sciline>=24.06.2
54
+ Requires-Dist: sciline>=25.04.1
55
55
  Requires-Dist: scipp>=25.01.0
56
56
  Requires-Dist: scippneutron>=25.02.0
57
57
  Requires-Dist: scippnexus>=24.11.0
@@ -31,7 +31,7 @@ requires-python = ">=3.10"
31
31
  # Run 'tox -e deps' after making changes here. This will update requirement files.
32
32
  # Make sure to list one dependency per line.
33
33
  dependencies = [
34
- "sciline>=24.06.2",
34
+ "sciline>=25.04.1",
35
35
  "scipp>=25.01.0",
36
36
  "scippneutron>=25.02.0",
37
37
  "scippnexus>=24.11.0",
@@ -1,10 +1,8 @@
1
1
  # Anything above "--- END OF CUSTOM SECTION ---"
2
2
  # will not be touched by ``make_base.py``
3
- # Numba, which is used in basetest, requires numpy<2.2
4
- numpy<2.2
5
3
  # --- END OF CUSTOM SECTION ---
6
4
  # The following was generated by 'tox -e deps', DO NOT EDIT MANUALLY!
7
- sciline>=24.06.2
5
+ sciline>=25.04.1
8
6
  scipp>=25.01.0
9
7
  scippneutron>=25.02.0
10
8
  scippnexus>=24.11.0
@@ -1,4 +1,4 @@
1
- # SHA1:bdbd868df28038a5e78614cb84a37acdf033872c
1
+ # SHA1:082d6bf55d8a06cdc1dd3a0a78dd31c318c26424
2
2
  #
3
3
  # This file is autogenerated by pip-compile-multi
4
4
  # To update, run:
@@ -17,7 +17,7 @@ dnspython==2.7.0
17
17
  # via email-validator
18
18
  email-validator==2.2.0
19
19
  # via scippneutron
20
- fonttools==4.56.0
20
+ fonttools==4.57.0
21
21
  # via matplotlib
22
22
  h5py==3.13.0
23
23
  # via
@@ -39,9 +39,8 @@ mpltoolbox==24.5.1
39
39
  # via scippneutron
40
40
  networkx==3.4.2
41
41
  # via cyclebane
42
- numpy==2.1.3
42
+ numpy==2.2.4
43
43
  # via
44
- # -r base.in
45
44
  # contourpy
46
45
  # h5py
47
46
  # matplotlib
@@ -57,9 +56,9 @@ pillow==11.1.0
57
56
  # via matplotlib
58
57
  plopp==25.3.0
59
58
  # via scippneutron
60
- pydantic==2.11.1
59
+ pydantic==2.11.3
61
60
  # via scippneutron
62
- pydantic-core==2.33.0
61
+ pydantic-core==2.33.1
63
62
  # via pydantic
64
63
  pyparsing==3.2.3
65
64
  # via matplotlib
@@ -68,7 +67,7 @@ python-dateutil==2.9.0.post0
68
67
  # matplotlib
69
68
  # scippneutron
70
69
  # scippnexus
71
- sciline==24.10.0
70
+ sciline==25.4.1
72
71
  # via -r base.in
73
72
  scipp==25.4.0
74
73
  # via
@@ -87,10 +86,11 @@ scipy==1.15.2
87
86
  # scippnexus
88
87
  six==1.17.0
89
88
  # via python-dateutil
90
- typing-extensions==4.13.0
89
+ typing-extensions==4.13.1
91
90
  # via
92
91
  # pydantic
93
92
  # pydantic-core
93
+ # sciline
94
94
  # typing-inspection
95
95
  typing-inspection==0.4.0
96
96
  # via pydantic
@@ -25,7 +25,7 @@ exceptiongroup==1.2.2
25
25
  # pytest
26
26
  executing==2.2.0
27
27
  # via stack-data
28
- fonttools==4.56.0
28
+ fonttools==4.57.0
29
29
  # via matplotlib
30
30
  idna==3.10
31
31
  # via requests
@@ -33,7 +33,7 @@ importlib-resources==6.5.2
33
33
  # via tof
34
34
  iniconfig==2.1.0
35
35
  # via pytest
36
- ipython==8.34.0
36
+ ipython==8.35.0
37
37
  # via ipywidgets
38
38
  ipywidgets==8.1.5
39
39
  # via -r basetest.in
@@ -51,9 +51,9 @@ matplotlib==3.10.1
51
51
  # via plopp
52
52
  matplotlib-inline==0.1.7
53
53
  # via ipython
54
- numba==0.61.0
54
+ numba==0.61.2
55
55
  # via -r basetest.in
56
- numpy==2.1.3
56
+ numpy==2.2.4
57
57
  # via
58
58
  # contourpy
59
59
  # matplotlib
@@ -116,7 +116,7 @@ traitlets==5.14.3
116
116
  # ipython
117
117
  # ipywidgets
118
118
  # matplotlib-inline
119
- typing-extensions==4.13.0
119
+ typing-extensions==4.13.1
120
120
  # via ipython
121
121
  urllib3==2.3.0
122
122
  # via requests
@@ -50,7 +50,7 @@ tomli==2.2.1
50
50
  # tox
51
51
  tox==4.25.0
52
52
  # via -r ci.in
53
- typing-extensions==4.13.0
53
+ typing-extensions==4.13.1
54
54
  # via tox
55
55
  urllib3==2.3.0
56
56
  # via requests
@@ -48,7 +48,7 @@ isoduration==20.11.0
48
48
  # via jsonschema
49
49
  jinja2-ansible-filters==1.3.2
50
50
  # via copier
51
- json5==0.11.0
51
+ json5==0.12.0
52
52
  # via jupyterlab-server
53
53
  jsonpointer==3.0.0
54
54
  # via jsonschema
@@ -69,7 +69,7 @@ jupyter-server==2.15.0
69
69
  # notebook-shim
70
70
  jupyter-server-terminals==0.5.3
71
71
  # via jupyter-server
72
- jupyterlab==4.3.6
72
+ jupyterlab==4.4.0
73
73
  # via -r dev.in
74
74
  jupyterlab-server==2.27.3
75
75
  # via jupyterlab
@@ -60,7 +60,7 @@ importlib-resources==6.5.2
60
60
  # via tof
61
61
  ipykernel==6.29.5
62
62
  # via -r docs.in
63
- ipython==8.34.0
63
+ ipython==8.35.0
64
64
  # via
65
65
  # -r docs.in
66
66
  # ipykernel
@@ -154,7 +154,7 @@ pygments==2.19.1
154
154
  # sphinx
155
155
  pyyaml==6.0.2
156
156
  # via myst-parser
157
- pyzmq==26.3.0
157
+ pyzmq==26.4.0
158
158
  # via
159
159
  # ipykernel
160
160
  # jupyter-client
@@ -38,7 +38,7 @@ exceptiongroup==1.2.2
38
38
  # pytest
39
39
  executing==2.2.0
40
40
  # via stack-data
41
- fonttools==4.56.0
41
+ fonttools==4.57.0
42
42
  # via matplotlib
43
43
  h5py==3.13.0
44
44
  # via
@@ -52,7 +52,7 @@ importlib-resources==6.5.2
52
52
  # via tof
53
53
  iniconfig==2.1.0
54
54
  # via pytest
55
- ipython==8.34.0
55
+ ipython==8.35.0
56
56
  # via ipywidgets
57
57
  ipywidgets==8.1.5
58
58
  # via -r nightly.in
@@ -78,7 +78,7 @@ mpltoolbox==24.5.1
78
78
  # via scippneutron
79
79
  networkx==3.4.2
80
80
  # via cyclebane
81
- numba==0.61.1rc1
81
+ numba==0.61.2
82
82
  # via -r nightly.in
83
83
  numpy==2.2.4
84
84
  # via
@@ -118,9 +118,9 @@ ptyprocess==0.7.0
118
118
  # via pexpect
119
119
  pure-eval==0.2.3
120
120
  # via stack-data
121
- pydantic==2.11.1
121
+ pydantic==2.11.3
122
122
  # via scippneutron
123
- pydantic-core==2.33.0
123
+ pydantic-core==2.33.1
124
124
  # via pydantic
125
125
  pygments==2.19.1
126
126
  # via ipython
@@ -169,11 +169,12 @@ traitlets==5.14.3
169
169
  # ipython
170
170
  # ipywidgets
171
171
  # matplotlib-inline
172
- typing-extensions==4.13.0
172
+ typing-extensions==4.13.1
173
173
  # via
174
174
  # ipython
175
175
  # pydantic
176
176
  # pydantic-core
177
+ # sciline
177
178
  # typing-inspection
178
179
  typing-inspection==0.4.0
179
180
  # via pydantic
@@ -198,19 +198,15 @@ NeXusDetectorName = NeXusName[snx.NXdetector]
198
198
  """Name of a detector (bank) in a NeXus file."""
199
199
 
200
200
 
201
- class NeXusComponent(
202
- sciline.ScopeTwoParams[Component, RunType, sc.DataGroup], sc.DataGroup
203
- ):
201
+ class NeXusComponent(sciline.Scope[Component, RunType, sc.DataGroup], sc.DataGroup):
204
202
  """Raw data from a NeXus component."""
205
203
 
206
204
 
207
- class AllNeXusComponents(
208
- sciline.ScopeTwoParams[Component, RunType, sc.DataGroup], sc.DataGroup
209
- ):
205
+ class AllNeXusComponents(sciline.Scope[Component, RunType, sc.DataGroup], sc.DataGroup):
210
206
  """Raw data from all NeXus components of one class."""
211
207
 
212
208
 
213
- class NeXusData(sciline.ScopeTwoParams[Component, RunType, sc.DataArray], sc.DataArray):
209
+ class NeXusData(sciline.Scope[Component, RunType, sc.DataArray], sc.DataArray):
214
210
  """
215
211
  Data array loaded from an NXevent_data or NXdata group.
216
212
 
@@ -218,7 +214,7 @@ class NeXusData(sciline.ScopeTwoParams[Component, RunType, sc.DataArray], sc.Dat
218
214
  """
219
215
 
220
216
 
221
- class Position(sciline.ScopeTwoParams[Component, RunType, sc.Variable], sc.Variable):
217
+ class Position(sciline.Scope[Component, RunType, sc.Variable], sc.Variable):
222
218
  """Position of a component such as source, sample, monitor, or detector."""
223
219
 
224
220
 
@@ -227,7 +223,7 @@ class DetectorPositionOffset(sciline.Scope[RunType, sc.Variable], sc.Variable):
227
223
 
228
224
 
229
225
  class MonitorPositionOffset(
230
- sciline.ScopeTwoParams[RunType, MonitorType, sc.Variable], sc.Variable
226
+ sciline.Scope[RunType, MonitorType, sc.Variable], sc.Variable
231
227
  ):
232
228
  """Offset for the monitor position, added to base position."""
233
229
 
@@ -241,7 +237,7 @@ class CalibratedBeamline(sciline.Scope[RunType, sc.DataArray], sc.DataArray):
241
237
 
242
238
 
243
239
  class CalibratedMonitor(
244
- sciline.ScopeTwoParams[RunType, MonitorType, sc.DataArray], sc.DataArray
240
+ sciline.Scope[RunType, MonitorType, sc.DataArray], sc.DataArray
245
241
  ):
246
242
  """Calibrated data from a monitor."""
247
243
 
@@ -250,9 +246,7 @@ class DetectorData(sciline.Scope[RunType, sc.DataArray], sc.DataArray):
250
246
  """Calibrated detector merged with neutron event or histogram data."""
251
247
 
252
248
 
253
- class MonitorData(
254
- sciline.ScopeTwoParams[RunType, MonitorType, sc.DataArray], sc.DataArray
255
- ):
249
+ class MonitorData(sciline.Scope[RunType, MonitorType, sc.DataArray], sc.DataArray):
256
250
  """Calibrated monitor merged with neutron event or histogram data."""
257
251
 
258
252
 
@@ -314,7 +308,7 @@ class NeXusDataLocationSpec(NeXusLocationSpec, Generic[Component, RunType]):
314
308
 
315
309
 
316
310
  class NeXusTransformationChain(
317
- sciline.ScopeTwoParams[Component, RunType, snx.TransformationChain],
311
+ sciline.Scope[Component, RunType, snx.TransformationChain],
318
312
  snx.TransformationChain,
319
313
  ): ...
320
314
 
@@ -43,13 +43,16 @@ def interpolate(
43
43
  if not (len(xp) == len(yp) == len(zp) == len(out)):
44
44
  raise ValueError("Interpolator: all input arrays must have the same size.")
45
45
 
46
+ nx = len(x)
47
+ ny = len(y)
48
+ nz = len(z)
46
49
  npoints = len(xp)
47
50
  xmin = x[0]
48
- xmax = x[-1]
51
+ xmax = x[nx - 1]
49
52
  ymin = y[0]
50
- ymax = y[-1]
53
+ ymax = y[ny - 1]
51
54
  zmin = z[0]
52
- zmax = z[-1]
55
+ zmax = z[nz - 1]
53
56
  dx = x[1] - xmin
54
57
  dy = y[1] - ymin
55
58
  dz = z[1] - zmin
@@ -75,14 +78,14 @@ def interpolate(
75
78
  out[i] = fill_value
76
79
 
77
80
  else:
78
- ix = int((xx - xmin) * one_over_dx)
79
- iy = int((yy - ymin) * one_over_dy)
80
- iz = int((zz - zmin) * one_over_dz)
81
+ ix = nx - 2 if xx == xmax else int((xx - xmin) * one_over_dx)
82
+ iy = ny - 2 if yy == ymax else int((yy - ymin) * one_over_dy)
83
+ iz = nz - 2 if zz == zmax else int((zz - zmin) * one_over_dz)
81
84
 
82
- y2 = y[iy + 1]
83
- y1 = y[iy]
84
- x2 = x[ix + 1]
85
85
  x1 = x[ix]
86
+ x2 = x[ix + 1]
87
+ y1 = y[iy]
88
+ y2 = y[iy + 1]
86
89
  z1 = z[iz]
87
90
  z2 = z[iz + 1]
88
91
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: essreduce
3
- Version: 25.4.0
3
+ Version: 25.4.1
4
4
  Summary: Common data reduction tools for the ESS facility
5
5
  Author: Scipp contributors
6
6
  License: BSD 3-Clause License
@@ -51,7 +51,7 @@ Classifier: Typing :: Typed
51
51
  Requires-Python: >=3.10
52
52
  Description-Content-Type: text/markdown
53
53
  License-File: LICENSE
54
- Requires-Dist: sciline>=24.06.2
54
+ Requires-Dist: sciline>=25.04.1
55
55
  Requires-Dist: scipp>=25.01.0
56
56
  Requires-Dist: scippneutron>=25.02.0
57
57
  Requires-Dist: scippnexus>=24.11.0
@@ -1,4 +1,4 @@
1
- sciline>=24.06.2
1
+ sciline>=25.04.1
2
2
  scipp>=25.01.0
3
3
  scippneutron>=25.02.0
4
4
  scippnexus>=24.11.0
@@ -74,3 +74,24 @@ def test_numba_and_scipy_interpolators_yield_same_results_with_out_of_bounds():
74
74
  scipy_result = scipy_interp(times, distances, pulse_indices)
75
75
 
76
76
  assert np.allclose(numba_result, scipy_result, equal_nan=True)
77
+
78
+
79
+ def test_numba_and_scipy_interpolators_yield_same_results_with_values_on_edges():
80
+ numba_interp, scipy_interp = _make_interpolators()
81
+
82
+ rng = np.random.default_rng(seed=42)
83
+ npoints = 2
84
+
85
+ times = np.array([0.0, 71.0])
86
+ distances = rng.uniform(39, 71, npoints)
87
+ pulse_indices = rng.uniform(-1, 2, npoints)
88
+ numba_result = numba_interp(times, distances, pulse_indices)
89
+ scipy_result = scipy_interp(times, distances, pulse_indices)
90
+ assert np.allclose(numba_result, scipy_result, equal_nan=True)
91
+
92
+ times = rng.uniform(0, 71, npoints)
93
+ distances = np.array([40.0, 70.0])
94
+ pulse_indices = rng.uniform(-1, 2, npoints)
95
+ numba_result = numba_interp(times, distances, pulse_indices)
96
+ scipy_result = scipy_interp(times, distances, pulse_indices)
97
+ assert np.allclose(numba_result, scipy_result, equal_nan=True)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes