diff --git a/.copier-answers.yml b/.copier-answers.yml index 4c28b3de..30864e3c 100644 --- a/.copier-answers.yml +++ b/.copier-answers.yml @@ -3,7 +3,7 @@ _commit: 3f79959 _src_path: gh:scipp/copier_template description: Diffraction data reduction for the European Spallation Source max_python: '3.13' -min_python: '3.10' +min_python: '3.11' namespace_package: ess nightly_deps: scipp,scippnexus,sciline,plopp,scippneutron,essreduce,tof orgname: scipp diff --git a/.github/workflows/python-version-ci b/.github/workflows/python-version-ci index c8cfe395..2c073331 100644 --- a/.github/workflows/python-version-ci +++ b/.github/workflows/python-version-ci @@ -1 +1 @@ -3.10 +3.11 diff --git a/.python-version b/.python-version index c8cfe395..2c073331 100644 --- a/.python-version +++ b/.python-version @@ -1 +1 @@ -3.10 +3.11 diff --git a/docs/developer/getting-started.md b/docs/developer/getting-started.md index a196f562..a7667511 100644 --- a/docs/developer/getting-started.md +++ b/docs/developer/getting-started.md @@ -40,7 +40,7 @@ Alternatively, if you want a different workflow, take a look at ``tox.ini`` or ` Run the tests using ```sh -tox -e py310 +tox -e py311 ``` (or just `tox` if you want to run all environments). diff --git a/docs/user-guide/dream/dream-instrument-view.ipynb b/docs/user-guide/dream/dream-instrument-view.ipynb index c573805d..ecb561d4 100644 --- a/docs/user-guide/dream/dream-instrument-view.ipynb +++ b/docs/user-guide/dream/dream-instrument-view.ipynb @@ -140,27 +140,9 @@ "full_view" ] }, - { - "cell_type": "code", - "execution_count": null, - "id": "9", - "metadata": { - "editable": true, - "nbsphinx": "hidden", - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "full_view[2].controls[\"tof\"][\"slider\"].value = 35\n", - "full_view[1].toolbar.tools[\"autoscale\"].click()" - ] - }, { "cell_type": "markdown", - "id": "10", + "id": "9", "metadata": { "editable": true, "slideshow": { @@ -179,7 +161,7 @@ { "cell_type": "code", "execution_count": null, - "id": "11", + "id": "10", "metadata": { "editable": true, "slideshow": { @@ -193,27 +175,9 @@ "mantle_view" ] }, - { - "cell_type": "code", - "execution_count": null, - "id": "12", - "metadata": { - "editable": true, - "nbsphinx": "hidden", - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "mantle_view[1].controls[\"tof\"][\"slider\"].value = 43\n", - "mantle_view[0].toolbar.tools[\"autoscale\"].click()" - ] - }, { "cell_type": "markdown", - "id": "13", + "id": "11", "metadata": {}, "source": [ "The instrument view is designed to be flexible in terms of what it accepts as input.\n", @@ -225,7 +189,7 @@ { "cell_type": "code", "execution_count": null, - "id": "14", + "id": "12", "metadata": {}, "outputs": [], "source": [ diff --git a/pyproject.toml b/pyproject.toml index 41191527..f203c190 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,14 +18,13 @@ classifiers = [ "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Scientific/Engineering", "Typing :: Typed", ] -requires-python = ">=3.10" +requires-python = ">=3.11" # IMPORTANT: # Run 'tox -e deps' after making changes here. This will update requirement files. diff --git a/requirements/base.txt b/requirements/base.txt index 1348723a..442c1652 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,9 +1,9 @@ # SHA1:8f044677d4db96fd48743befd036bb0b7410e72f # -# This file is autogenerated by pip-compile-multi +# This file was generated by pip-compile-multi. # To update, run: # -# pip-compile-multi +# requirements upgrade # annotated-types==0.7.0 # via pydantic @@ -13,9 +13,9 @@ click==8.2.1 # via dask cloudpickle==3.1.1 # via dask -comm==0.2.2 +comm==0.2.3 # via ipywidgets -contourpy==1.3.2 +contourpy==1.3.3 # via matplotlib cyclebane==24.10.0 # via sciline @@ -29,15 +29,13 @@ dnspython==2.7.0 # via email-validator email-validator==2.2.0 # via scippneutron -essreduce==25.7.0 +essreduce==25.7.1 # via -r base.in -exceptiongroup==1.3.0 - # via ipython executing==2.2.0 # via stack-data -fonttools==4.58.5 +fonttools==4.59.0 # via matplotlib -fsspec==2025.5.1 +fsspec==2025.7.0 # via dask graphviz==0.21 # via -r base.in @@ -51,8 +49,10 @@ importlib-metadata==8.7.0 # via dask ipydatawidgets==4.3.5 # via pythreejs -ipython==8.37.0 +ipython==9.4.0 # via ipywidgets +ipython-pygments-lexers==1.1.1 + # via ipython ipywidgets==8.1.7 # via # ipydatawidgets @@ -70,7 +70,7 @@ lazy-loader==0.4 # tof locket==1.0.0 # via partd -matplotlib==3.10.3 +matplotlib==3.10.5 # via # mpltoolbox # plopp @@ -78,9 +78,9 @@ matplotlib-inline==0.1.7 # via ipython mpltoolbox==25.5.0 # via scippneutron -networkx==3.4.2 +networkx==3.5 # via cyclebane -numpy==2.2.6 +numpy==2.3.2 # via # -r base.in # contourpy @@ -104,7 +104,7 @@ pexpect==4.9.0 # via ipython pillow==11.3.0 # via matplotlib -plopp==25.6.1 +plopp==25.7.1 # via # -r base.in # scippneutron @@ -120,7 +120,9 @@ pydantic==2.11.7 pydantic-core==2.33.2 # via pydantic pygments==2.19.2 - # via ipython + # via + # ipython + # ipython-pygments-lexers pyparsing==3.2.3 # via matplotlib python-dateutil==2.9.0.post0 @@ -152,7 +154,7 @@ scippnexus==25.6.0 # -r base.in # essreduce # scippneutron -scipy==1.15.3 +scipy==1.16.1 # via # scippneutron # scippnexus @@ -169,7 +171,6 @@ toolz==1.0.0 # partd traitlets==5.14.3 # via - # comm # ipython # ipywidgets # matplotlib-inline @@ -179,7 +180,6 @@ traittypes==0.2.1 # via ipydatawidgets typing-extensions==4.14.1 # via - # exceptiongroup # ipython # pydantic # pydantic-core diff --git a/requirements/basetest.txt b/requirements/basetest.txt index e7f80574..db915f1b 100644 --- a/requirements/basetest.txt +++ b/requirements/basetest.txt @@ -1,21 +1,19 @@ # SHA1:c4f3e9aaa3abd10fcdf497bea14415857f62cc89 # -# This file is autogenerated by pip-compile-multi +# This file was generated by pip-compile-multi. # To update, run: # -# pip-compile-multi +# requirements upgrade # -certifi==2025.7.14 +certifi==2025.8.3 # via requests charset-normalizer==3.4.2 # via requests -exceptiongroup==1.3.0 - # via pytest idna==3.10 # via requests iniconfig==2.1.0 # via pytest -numpy==2.2.6 +numpy==2.3.2 # via pandas packaging==25.0 # via @@ -41,10 +39,6 @@ requests==2.32.4 # via pooch six==1.17.0 # via python-dateutil -tomli==2.2.1 - # via pytest -typing-extensions==4.14.1 - # via exceptiongroup tzdata==2025.2 # via pandas urllib3==2.5.0 diff --git a/requirements/ci.txt b/requirements/ci.txt index b97886a3..cf385f77 100644 --- a/requirements/ci.txt +++ b/requirements/ci.txt @@ -1,13 +1,13 @@ # SHA1:6344d52635ea11dca331a3bc6eb1833c4c64d585 # -# This file is autogenerated by pip-compile-multi +# This file was generated by pip-compile-multi. # To update, run: # -# pip-compile-multi +# requirements upgrade # cachetools==6.1.0 # via tox -certifi==2025.7.14 +certifi==2025.8.3 # via requests chardet==5.2.0 # via tox @@ -15,7 +15,7 @@ charset-normalizer==3.4.2 # via requests colorama==0.4.6 # via tox -distlib==0.3.9 +distlib==0.4.0 # via virtualenv filelock==3.18.0 # via @@ -23,7 +23,7 @@ filelock==3.18.0 # virtualenv gitdb==4.0.12 # via gitpython -gitpython==3.1.44 +gitpython==3.1.45 # via -r ci.in idna==3.10 # via requests @@ -44,15 +44,9 @@ requests==2.32.4 # via -r ci.in smmap==5.0.2 # via gitdb -tomli==2.2.1 - # via - # pyproject-api - # tox -tox==4.27.0 +tox==4.28.4 # via -r ci.in -typing-extensions==4.14.1 - # via tox urllib3==2.5.0 # via requests -virtualenv==20.31.2 +virtualenv==20.33.1 # via tox diff --git a/requirements/dev.txt b/requirements/dev.txt index 9169f67d..94aff0a8 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -1,9 +1,9 @@ # SHA1:efd19a3a98c69fc3d6d6233ed855de7e4a208f74 # -# This file is autogenerated by pip-compile-multi +# This file was generated by pip-compile-multi. # To update, run: # -# pip-compile-multi +# requirements upgrade # -r base.txt -r ci.txt @@ -12,13 +12,13 @@ -r static.txt -r test.txt -r wheels.txt -anyio==4.9.0 +anyio==4.10.0 # via # httpx # jupyter-server argon2-cffi==25.1.0 # via jupyter-server -argon2-cffi-bindings==21.2.0 +argon2-cffi-bindings==25.1.0 # via argon2-cffi arrow==1.3.0 # via isoduration @@ -26,7 +26,7 @@ async-lru==2.0.5 # via jupyterlab cffi==1.17.1 # via argon2-cffi-bindings -copier==9.8.0 +copier==9.9.0 # via -r dev.in dunamai==1.25.0 # via copier @@ -48,14 +48,14 @@ json5==0.12.0 # via jupyterlab-server jsonpointer==3.0.0 # via jsonschema -jsonschema[format-nongpl]==4.24.0 +jsonschema[format-nongpl]==4.25.0 # via # jupyter-events # jupyterlab-server # nbformat jupyter-events==0.12.0 # via jupyter-server -jupyter-lsp==2.2.5 +jupyter-lsp==2.2.6 # via jupyterlab jupyter-server==2.16.0 # via @@ -65,17 +65,19 @@ jupyter-server==2.16.0 # notebook-shim jupyter-server-terminals==0.5.3 # via jupyter-server -jupyterlab==4.4.4 +jupyterlab==4.4.5 # via -r dev.in jupyterlab-server==2.27.3 # via jupyterlab +lark==1.2.2 + # via rfc3987-syntax notebook-shim==0.2.4 # via jupyterlab overrides==7.7.0 # via jupyter-server pip-compile-multi==3.2.1 # via -r dev.in -pip-tools==7.4.1 +pip-tools==7.5.0 # via pip-compile-multi plumbum==1.9.0 # via copier @@ -95,6 +97,8 @@ rfc3986-validator==0.1.1 # via # jsonschema # jupyter-events +rfc3987-syntax==1.1.0 + # via jsonschema send2trash==1.8.3 # via jupyter-server sniffio==1.3.1 diff --git a/requirements/docs.txt b/requirements/docs.txt index 074b7b89..0291d17e 100644 --- a/requirements/docs.txt +++ b/requirements/docs.txt @@ -1,9 +1,9 @@ # SHA1:f584be06df2929a863ef5490377cbfe43c8e99a0 # -# This file is autogenerated by pip-compile-multi +# This file was generated by pip-compile-multi. # To update, run: # -# pip-compile-multi +# requirements upgrade # -r base.txt accessible-pygments==0.0.5 @@ -26,11 +26,11 @@ beautifulsoup4==4.13.4 # pydata-sphinx-theme bleach[css]==6.2.0 # via nbconvert -certifi==2025.7.14 +certifi==2025.8.3 # via requests charset-normalizer==3.4.2 # via requests -debugpy==1.8.14 +debugpy==1.8.15 # via ipykernel defusedxml==0.7.1 # via nbconvert @@ -46,7 +46,7 @@ fastjsonschema==2.21.1 # via nbformat imagesize==1.4.1 # via sphinx -ipykernel==6.29.5 +ipykernel==6.30.1 # via -r docs.in ipympl==0.9.7 # via -r docs.in @@ -56,7 +56,7 @@ jinja2==3.1.6 # nbconvert # nbsphinx # sphinx -jsonschema==4.24.0 +jsonschema==4.25.0 # via nbformat jsonschema-specifications==2025.4.1 # via jsonschema @@ -116,7 +116,7 @@ pooch==1.8.2 # via -r docs.in psutil==7.0.0 # via ipykernel -pyarrow==20.0.0 +pyarrow==21.0.0 # via -r docs.in pybtex==0.25.1 # via @@ -132,7 +132,7 @@ python-dotenv==1.1.1 # via pydantic-settings pytz==2025.2 # via pandas -pyzmq==27.0.0 +pyzmq==27.0.1 # via # ipykernel # jupyter-client @@ -185,8 +185,6 @@ sphinxcontrib-serializinghtml==2.0.0 # via sphinx tinycss2==1.4.0 # via bleach -tomli==2.2.1 - # via sphinx tornado==6.5.1 # via # ipykernel diff --git a/requirements/mypy.txt b/requirements/mypy.txt index eab9c63d..a2b4de29 100644 --- a/requirements/mypy.txt +++ b/requirements/mypy.txt @@ -1,12 +1,12 @@ # SHA1:859ef9c15e5e57c6c91510133c01f5751feee941 # -# This file is autogenerated by pip-compile-multi +# This file was generated by pip-compile-multi. # To update, run: # -# pip-compile-multi +# requirements upgrade # -r test.txt -mypy==1.17.0 +mypy==1.17.1 # via -r mypy.in mypy-extensions==1.1.0 # via mypy diff --git a/requirements/nightly.txt b/requirements/nightly.txt index 0271ea7e..0d3d091c 100644 --- a/requirements/nightly.txt +++ b/requirements/nightly.txt @@ -1,9 +1,9 @@ # SHA1:366263fa92dc0eb9f81d46f056e0c80a931f671e # -# This file is autogenerated by pip-compile-multi +# This file was generated by pip-compile-multi. # To update, run: # -# pip-compile-multi +# requirements upgrade # --index-url https://pypi.anaconda.org/scipp-nightly-wheels/simple/ --extra-index-url https://pypi.org/simple @@ -12,7 +12,7 @@ annotated-types==0.7.0 # via pydantic asttokens==3.0.0 # via stack-data -certifi==2025.7.14 +certifi==2025.8.3 # via requests charset-normalizer==3.4.2 # via requests @@ -20,9 +20,9 @@ click==8.2.1 # via dask cloudpickle==3.1.1 # via dask -comm==0.2.2 +comm==0.2.3 # via ipywidgets -contourpy==1.3.2 +contourpy==1.3.3 # via matplotlib cyclebane==24.10.0 # via sciline @@ -38,15 +38,11 @@ email-validator==2.2.0 # via scippneutron essreduce @ git+https://github.com/scipp/essreduce@main # via -r nightly.in -exceptiongroup==1.3.0 - # via - # ipython - # pytest executing==2.2.0 # via stack-data -fonttools==4.58.5 +fonttools==4.59.0 # via matplotlib -fsspec==2025.5.1 +fsspec==2025.7.0 # via dask graphviz==0.21 # via -r nightly.in @@ -64,8 +60,10 @@ iniconfig==2.1.0 # via pytest ipydatawidgets==4.3.5 # via pythreejs -ipython==8.37.0 +ipython==9.4.0 # via ipywidgets +ipython-pygments-lexers==1.1.1 + # via ipython ipywidgets==8.1.7 # via # ipydatawidgets @@ -83,7 +81,7 @@ lazy-loader==0.4 # tof locket==1.0.0 # via partd -matplotlib==3.10.3 +matplotlib==3.10.5 # via # mpltoolbox # plopp @@ -91,9 +89,9 @@ matplotlib-inline==0.1.7 # via ipython mpltoolbox==25.5.0 # via scippneutron -networkx==3.4.2 +networkx==3.5 # via cyclebane -numpy==2.2.6 +numpy==2.3.2 # via # -r nightly.in # contourpy @@ -139,13 +137,14 @@ ptyprocess==0.7.0 # via pexpect pure-eval==0.2.3 # via stack-data -pydantic==2.11.7 +pydantic==2.12.0a1 # via scippneutron -pydantic-core==2.33.2 +pydantic-core==2.37.2 # via pydantic pygments==2.19.2 # via # ipython + # ipython-pygments-lexers # pytest pyparsing==3.2.3 # via matplotlib @@ -156,7 +155,6 @@ python-dateutil==2.9.0.post0 # matplotlib # pandas # scippneutron - # scippnexus pythreejs==2.4.2 # via -r nightly.in pytz==2025.2 @@ -185,7 +183,7 @@ scippnexus @ git+https://github.com/scipp/scippnexus@main # -r nightly.in # essreduce # scippneutron -scipy==1.15.3 +scipy==1.16.1 # via # scippneutron # scippnexus @@ -196,15 +194,12 @@ stack-data==0.6.3 # via ipython tof @ git+https://github.com/scipp/tof@main # via -r nightly.in -tomli==2.2.1 - # via pytest toolz==1.0.0 # via # dask # partd traitlets==5.14.3 # via - # comm # ipython # ipywidgets # matplotlib-inline @@ -214,7 +209,6 @@ traittypes==0.2.1 # via ipydatawidgets typing-extensions==4.14.1 # via - # exceptiongroup # ipython # pydantic # pydantic-core diff --git a/requirements/static.txt b/requirements/static.txt index 34a766ef..3e288557 100644 --- a/requirements/static.txt +++ b/requirements/static.txt @@ -1,13 +1,13 @@ # SHA1:5a0b1bb22ae805d8aebba0f3bf05ab91aceae0d8 # -# This file is autogenerated by pip-compile-multi +# This file was generated by pip-compile-multi. # To update, run: # -# pip-compile-multi +# requirements upgrade # cfgv==3.4.0 # via pre-commit -distlib==0.3.9 +distlib==0.4.0 # via virtualenv filelock==3.18.0 # via virtualenv @@ -21,5 +21,5 @@ pre-commit==4.2.0 # via -r static.in pyyaml==6.0.2 # via pre-commit -virtualenv==20.31.2 +virtualenv==20.33.1 # via pre-commit diff --git a/requirements/test.txt b/requirements/test.txt index 3c7454d8..6817392e 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -1,9 +1,9 @@ # SHA1:ef2ee9576d8a9e65b44e2865a26887eed3fc49d1 # -# This file is autogenerated by pip-compile-multi +# This file was generated by pip-compile-multi. # To update, run: # -# pip-compile-multi +# requirements upgrade # -r base.txt -r basetest.txt diff --git a/requirements/wheels.txt b/requirements/wheels.txt index 21d3cb06..3558aae2 100644 --- a/requirements/wheels.txt +++ b/requirements/wheels.txt @@ -1,15 +1,13 @@ # SHA1:80754af91bfb6d1073585b046fe0a474ce868509 # -# This file is autogenerated by pip-compile-multi +# This file was generated by pip-compile-multi. # To update, run: # -# pip-compile-multi +# requirements upgrade # -build==1.2.2.post1 +build==1.3.0 # via -r wheels.in packaging==25.0 # via build pyproject-hooks==1.2.0 # via build -tomli==2.2.1 - # via build diff --git a/src/ess/dream/instrument_view.py b/src/ess/dream/instrument_view.py index 9358b54d..d97a6348 100644 --- a/src/ess/dream/instrument_view.py +++ b/src/ess/dream/instrument_view.py @@ -103,7 +103,7 @@ def __init__( if dim is not None: self.slider = SliceWidget(next(iter(self.data.values())), dims=[dim]) - self.slider.controls[dim]["slider"].layout = {"width": "600px"} + self.slider.controls[dim].slider.layout = {"width": "600px"} self.slider_node = pp.widget_node(self.slider) self.slice_nodes = { key: slice_dims(n, self.slider_node) diff --git a/tox.ini b/tox.ini index 0ce389f4..44ca86ec 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py310 +envlist = py311 isolated_build = true [testenv]