diff --git a/continuous-integration/requirements-3.11.txt b/continuous-integration/requirements-3.11.txt index 177b6de0..0ea4ac20 100644 --- a/continuous-integration/requirements-3.11.txt +++ b/continuous-integration/requirements-3.11.txt @@ -4,15 +4,15 @@ # # pip-compile --extra=testing --output-file=./continuous-integration/requirements-3.11.txt --unsafe-package=emsarray pyproject.toml # -bokeh==3.6.2 +bokeh==3.7.3 # via dask -bottleneck==1.4.2 +bottleneck==1.5.0 # via # emsarray # emsarray (pyproject.toml) -cartopy==0.24.1 +cartopy==0.25.0 # via emsarray -certifi==2024.12.14 +certifi==2025.8.3 # via # netcdf4 # pyproj @@ -23,9 +23,9 @@ cftime==1.6.4.post1 # netcdf4 cfunits==3.3.7 # via emsarray -charset-normalizer==3.4.1 +charset-normalizer==3.4.3 # via requests -click==8.1.8 +click==8.2.1 # via # dask # distributed @@ -33,25 +33,25 @@ cloudpickle==3.1.1 # via # dask # distributed -contourpy==1.3.1 +contourpy==1.3.3 # via # bokeh # matplotlib -coverage[toml]==7.6.10 +coverage[toml]==7.10.4 # via pytest-cov cycler==0.12.1 # via matplotlib -dask[array,complete,dataframe,diagnostics,distributed]==2025.1.0 +dask[array,complete,dataframe,diagnostics,distributed]==2025.7.0 # via # distributed # xarray -distributed==2025.1.0 +distributed==2025.7.0 # via dask -flake8==7.1.1 +flake8==7.3.0 # via emsarray (pyproject.toml) -fonttools==4.55.4 +fonttools==4.59.1 # via matplotlib -fsspec==2024.12.0 +fsspec==2025.7.0 # via dask geojson==3.2.0 # via @@ -59,46 +59,48 @@ geojson==3.2.0 # emsarray (pyproject.toml) idna==3.10 # via requests -importlib-metadata==8.6.1 +importlib-metadata==8.7.0 # via dask -iniconfig==2.0.0 +iniconfig==2.1.0 # via pytest -isort==5.13.2 +isort==6.0.1 # via emsarray (pyproject.toml) -jinja2==3.1.5 +jinja2==3.1.6 # via # bokeh # dask # distributed # pytest-mpl -kiwisolver==1.4.8 +kiwisolver==1.4.9 # via matplotlib locket==1.0.0 # via # distributed # partd -lz4==4.3.3 +lz4==4.4.4 # via dask markupsafe==3.0.2 # via jinja2 -matplotlib==3.10.0 +matplotlib==3.10.5 # via # cartopy # emsarray # pytest-mpl mccabe==0.7.0 # via flake8 -msgpack==1.1.0 +msgpack==1.1.1 # via distributed -mypy==1.14.1 +mypy==1.17.1 # via emsarray (pyproject.toml) -mypy-extensions==1.0.0 +mypy-extensions==1.1.0 # via mypy +narwhals==2.1.2 + # via bokeh netcdf4==1.7.2 # via # emsarray # emsarray (pyproject.toml) -numpy==2.2.2 +numpy==2.3.2 # via # bokeh # bottleneck @@ -116,7 +118,7 @@ numpy==2.2.2 # pykdtree # shapely # xarray -packaging==24.2 +packaging==25.0 # via # bokeh # cartopy @@ -130,51 +132,57 @@ packaging==24.2 # pytest # pytest-mpl # xarray -pandas==2.2.3 +pandas==2.3.1 # via # bokeh # dask # xarray -pandas-stubs==2.2.3.241126 +pandas-stubs==2.3.0.250703 # via emsarray (pyproject.toml) partd==1.4.2 # via dask -pillow==11.1.0 +pathspec==0.12.1 + # via mypy +pillow==11.3.0 # via # bokeh # matplotlib # pytest-mpl -platformdirs==4.3.6 +platformdirs==4.3.8 # via pooch -pluggy==1.5.0 - # via pytest +pluggy==1.6.0 + # via + # pytest + # pytest-cov pooch==1.8.2 # via emsarray -psutil==6.1.1 +psutil==7.0.0 # via distributed -pyarrow==19.0.0 +pyarrow==21.0.0 # via dask -pycodestyle==2.12.1 +pycodestyle==2.14.0 # via flake8 -pyflakes==3.2.0 +pyflakes==3.4.0 # via flake8 -pykdtree==1.3.13 +pygments==2.19.2 + # via pytest +pykdtree==1.4.3 # via emsarray -pyparsing==3.2.1 +pyparsing==3.2.3 # via matplotlib -pyproj==3.7.0 +pyproj==3.7.2 # via cartopy pyshp==2.3.1 # via # cartopy # emsarray # emsarray (pyproject.toml) -pytest==8.3.4 +pytest==8.4.1 # via # emsarray (pyproject.toml) # pytest-cov # pytest-mpl -pytest-cov==6.0.0 +pytest-cov==6.2.1 # via emsarray (pyproject.toml) pytest-mpl==0.17.0 # via emsarray (pyproject.toml) @@ -182,16 +190,16 @@ python-dateutil==2.9.0.post0 # via # matplotlib # pandas -pytz==2024.2 +pytz==2025.2 # via pandas pyyaml==6.0.2 # via # bokeh # dask # distributed -requests==2.32.3 +requests==2.32.4 # via pooch -shapely==2.0.6 +shapely==2.1.1 # via # cartopy # emsarray @@ -200,38 +208,38 @@ six==1.17.0 # via python-dateutil sortedcontainers==2.4.0 # via distributed -tblib==3.0.0 +tblib==3.1.0 # via distributed toolz==1.0.0 # via # dask # distributed # partd -tornado==6.4.2 +tornado==6.5.2 # via # bokeh # distributed -types-pytz==2024.2.0.20241221 +types-pytz==2025.2.0.20250809 # via # emsarray (pyproject.toml) # pandas-stubs -typing-extensions==4.12.2 +typing-extensions==4.14.1 # via mypy -tzdata==2025.1 +tzdata==2025.2 # via pandas -urllib3==2.3.0 +urllib3==2.5.0 # via # distributed # requests -xarray[parallel]==2025.1.1 +xarray[parallel]==2025.8.0 # via # emsarray # emsarray (pyproject.toml) -xyzservices==2025.1.0 +xyzservices==2025.4.0 # via bokeh zict==3.0.0 # via distributed -zipp==3.21.0 +zipp==3.23.0 # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: diff --git a/continuous-integration/requirements-3.12.txt b/continuous-integration/requirements-3.12.txt index a282b8cc..592edaa1 100644 --- a/continuous-integration/requirements-3.12.txt +++ b/continuous-integration/requirements-3.12.txt @@ -4,15 +4,15 @@ # # pip-compile --extra=testing --output-file=./continuous-integration/requirements-3.12.txt --unsafe-package=emsarray pyproject.toml # -bokeh==3.6.2 +bokeh==3.7.3 # via dask -bottleneck==1.4.2 +bottleneck==1.5.0 # via # emsarray # emsarray (pyproject.toml) -cartopy==0.24.1 +cartopy==0.25.0 # via emsarray -certifi==2024.12.14 +certifi==2025.8.3 # via # netcdf4 # pyproj @@ -23,9 +23,9 @@ cftime==1.6.4.post1 # netcdf4 cfunits==3.3.7 # via emsarray -charset-normalizer==3.4.1 +charset-normalizer==3.4.3 # via requests -click==8.1.8 +click==8.2.1 # via # dask # distributed @@ -33,25 +33,25 @@ cloudpickle==3.1.1 # via # dask # distributed -contourpy==1.3.1 +contourpy==1.3.3 # via # bokeh # matplotlib -coverage[toml]==7.6.10 +coverage[toml]==7.10.4 # via pytest-cov cycler==0.12.1 # via matplotlib -dask[array,complete,dataframe,diagnostics,distributed]==2025.1.0 +dask[array,complete,dataframe,diagnostics,distributed]==2025.7.0 # via # distributed # xarray -distributed==2025.1.0 +distributed==2025.7.0 # via dask -flake8==7.1.1 +flake8==7.3.0 # via emsarray (pyproject.toml) -fonttools==4.55.4 +fonttools==4.59.1 # via matplotlib -fsspec==2024.12.0 +fsspec==2025.7.0 # via dask geojson==3.2.0 # via @@ -59,44 +59,46 @@ geojson==3.2.0 # emsarray (pyproject.toml) idna==3.10 # via requests -iniconfig==2.0.0 +iniconfig==2.1.0 # via pytest -isort==5.13.2 +isort==6.0.1 # via emsarray (pyproject.toml) -jinja2==3.1.5 +jinja2==3.1.6 # via # bokeh # dask # distributed # pytest-mpl -kiwisolver==1.4.8 +kiwisolver==1.4.9 # via matplotlib locket==1.0.0 # via # distributed # partd -lz4==4.3.3 +lz4==4.4.4 # via dask markupsafe==3.0.2 # via jinja2 -matplotlib==3.10.0 +matplotlib==3.10.5 # via # cartopy # emsarray # pytest-mpl mccabe==0.7.0 # via flake8 -msgpack==1.1.0 +msgpack==1.1.1 # via distributed -mypy==1.14.1 +mypy==1.17.1 # via emsarray (pyproject.toml) -mypy-extensions==1.0.0 +mypy-extensions==1.1.0 # via mypy +narwhals==2.1.2 + # via bokeh netcdf4==1.7.2 # via # emsarray # emsarray (pyproject.toml) -numpy==2.2.2 +numpy==2.3.2 # via # bokeh # bottleneck @@ -114,7 +116,7 @@ numpy==2.2.2 # pykdtree # shapely # xarray -packaging==24.2 +packaging==25.0 # via # bokeh # cartopy @@ -128,51 +130,57 @@ packaging==24.2 # pytest # pytest-mpl # xarray -pandas==2.2.3 +pandas==2.3.1 # via # bokeh # dask # xarray -pandas-stubs==2.2.3.241126 +pandas-stubs==2.3.0.250703 # via emsarray (pyproject.toml) partd==1.4.2 # via dask -pillow==11.1.0 +pathspec==0.12.1 + # via mypy +pillow==11.3.0 # via # bokeh # matplotlib # pytest-mpl -platformdirs==4.3.6 +platformdirs==4.3.8 # via pooch -pluggy==1.5.0 - # via pytest +pluggy==1.6.0 + # via + # pytest + # pytest-cov pooch==1.8.2 # via emsarray -psutil==6.1.1 +psutil==7.0.0 # via distributed -pyarrow==19.0.0 +pyarrow==21.0.0 # via dask -pycodestyle==2.12.1 +pycodestyle==2.14.0 # via flake8 -pyflakes==3.2.0 +pyflakes==3.4.0 # via flake8 -pykdtree==1.3.13 +pygments==2.19.2 + # via pytest +pykdtree==1.4.3 # via emsarray -pyparsing==3.2.1 +pyparsing==3.2.3 # via matplotlib -pyproj==3.7.0 +pyproj==3.7.2 # via cartopy pyshp==2.3.1 # via # cartopy # emsarray # emsarray (pyproject.toml) -pytest==8.3.4 +pytest==8.4.1 # via # emsarray (pyproject.toml) # pytest-cov # pytest-mpl -pytest-cov==6.0.0 +pytest-cov==6.2.1 # via emsarray (pyproject.toml) pytest-mpl==0.17.0 # via emsarray (pyproject.toml) @@ -180,16 +188,16 @@ python-dateutil==2.9.0.post0 # via # matplotlib # pandas -pytz==2024.2 +pytz==2025.2 # via pandas pyyaml==6.0.2 # via # bokeh # dask # distributed -requests==2.32.3 +requests==2.32.4 # via pooch -shapely==2.0.6 +shapely==2.1.1 # via # cartopy # emsarray @@ -198,34 +206,34 @@ six==1.17.0 # via python-dateutil sortedcontainers==2.4.0 # via distributed -tblib==3.0.0 +tblib==3.1.0 # via distributed toolz==1.0.0 # via # dask # distributed # partd -tornado==6.4.2 +tornado==6.5.2 # via # bokeh # distributed -types-pytz==2024.2.0.20241221 +types-pytz==2025.2.0.20250809 # via # emsarray (pyproject.toml) # pandas-stubs -typing-extensions==4.12.2 +typing-extensions==4.14.1 # via mypy -tzdata==2025.1 +tzdata==2025.2 # via pandas -urllib3==2.3.0 +urllib3==2.5.0 # via # distributed # requests -xarray[parallel]==2025.1.1 +xarray[parallel]==2025.8.0 # via # emsarray # emsarray (pyproject.toml) -xyzservices==2025.1.0 +xyzservices==2025.4.0 # via bokeh zict==3.0.0 # via distributed diff --git a/continuous-integration/requirements-3.13.txt b/continuous-integration/requirements-3.13.txt index f89c8fc6..ad5f2587 100644 --- a/continuous-integration/requirements-3.13.txt +++ b/continuous-integration/requirements-3.13.txt @@ -4,15 +4,15 @@ # # pip-compile --extra=testing --output-file=./continuous-integration/requirements-3.13.txt --unsafe-package=emsarray pyproject.toml # -bokeh==3.6.2 +bokeh==3.7.3 # via dask -bottleneck==1.4.2 +bottleneck==1.5.0 # via # emsarray # emsarray (pyproject.toml) -cartopy==0.24.1 +cartopy==0.25.0 # via emsarray -certifi==2024.12.14 +certifi==2025.8.3 # via # netcdf4 # pyproj @@ -23,9 +23,9 @@ cftime==1.6.4.post1 # netcdf4 cfunits==3.3.7 # via emsarray -charset-normalizer==3.4.1 +charset-normalizer==3.4.3 # via requests -click==8.1.8 +click==8.2.1 # via # dask # distributed @@ -33,25 +33,25 @@ cloudpickle==3.1.1 # via # dask # distributed -contourpy==1.3.1 +contourpy==1.3.3 # via # bokeh # matplotlib -coverage[toml]==7.6.10 +coverage[toml]==7.10.4 # via pytest-cov cycler==0.12.1 # via matplotlib -dask[array,complete,dataframe,diagnostics,distributed]==2025.1.0 +dask[array,complete,dataframe,diagnostics,distributed]==2025.7.0 # via # distributed # xarray -distributed==2025.1.0 +distributed==2025.7.0 # via dask -flake8==7.1.1 +flake8==7.3.0 # via emsarray (pyproject.toml) -fonttools==4.55.4 +fonttools==4.59.1 # via matplotlib -fsspec==2024.12.0 +fsspec==2025.7.0 # via dask geojson==3.2.0 # via @@ -59,44 +59,46 @@ geojson==3.2.0 # emsarray (pyproject.toml) idna==3.10 # via requests -iniconfig==2.0.0 +iniconfig==2.1.0 # via pytest -isort==5.13.2 +isort==6.0.1 # via emsarray (pyproject.toml) -jinja2==3.1.5 +jinja2==3.1.6 # via # bokeh # dask # distributed # pytest-mpl -kiwisolver==1.4.8 +kiwisolver==1.4.9 # via matplotlib locket==1.0.0 # via # distributed # partd -lz4==4.3.3 +lz4==4.4.4 # via dask markupsafe==3.0.2 # via jinja2 -matplotlib==3.10.0 +matplotlib==3.10.5 # via # cartopy # emsarray # pytest-mpl mccabe==0.7.0 # via flake8 -msgpack==1.1.0 +msgpack==1.1.1 # via distributed -mypy==1.14.1 +mypy==1.17.1 # via emsarray (pyproject.toml) -mypy-extensions==1.0.0 +mypy-extensions==1.1.0 # via mypy +narwhals==2.1.2 + # via bokeh netcdf4==1.7.2 # via # emsarray # emsarray (pyproject.toml) -numpy==2.2.2 +numpy==2.3.2 # via # bokeh # bottleneck @@ -114,7 +116,7 @@ numpy==2.2.2 # pykdtree # shapely # xarray -packaging==24.2 +packaging==25.0 # via # bokeh # cartopy @@ -128,51 +130,57 @@ packaging==24.2 # pytest # pytest-mpl # xarray -pandas==2.2.3 +pandas==2.3.1 # via # bokeh # dask # xarray -pandas-stubs==2.2.3.241126 +pandas-stubs==2.3.0.250703 # via emsarray (pyproject.toml) partd==1.4.2 # via dask -pillow==11.1.0 +pathspec==0.12.1 + # via mypy +pillow==11.3.0 # via # bokeh # matplotlib # pytest-mpl -platformdirs==4.3.6 +platformdirs==4.3.8 # via pooch -pluggy==1.5.0 - # via pytest +pluggy==1.6.0 + # via + # pytest + # pytest-cov pooch==1.8.2 # via emsarray -psutil==6.1.1 +psutil==7.0.0 # via distributed -pyarrow==19.0.0 +pyarrow==21.0.0 # via dask -pycodestyle==2.12.1 +pycodestyle==2.14.0 # via flake8 -pyflakes==3.2.0 +pyflakes==3.4.0 # via flake8 -pykdtree==1.3.13 +pygments==2.19.2 + # via pytest +pykdtree==1.4.3 # via emsarray -pyparsing==3.2.1 +pyparsing==3.2.3 # via matplotlib -pyproj==3.7.0 +pyproj==3.7.2 # via cartopy pyshp==2.3.1 # via # cartopy # emsarray # emsarray (pyproject.toml) -pytest==8.3.4 +pytest==8.4.1 # via # emsarray (pyproject.toml) # pytest-cov # pytest-mpl -pytest-cov==6.0.0 +pytest-cov==6.2.1 # via emsarray (pyproject.toml) pytest-mpl==0.17.0 # via emsarray (pyproject.toml) @@ -180,16 +188,16 @@ python-dateutil==2.9.0.post0 # via # matplotlib # pandas -pytz==2024.2 +pytz==2025.2 # via pandas pyyaml==6.0.2 # via # bokeh # dask # distributed -requests==2.32.3 +requests==2.32.4 # via pooch -shapely==2.0.6 +shapely==2.1.1 # via # cartopy # emsarray @@ -198,34 +206,34 @@ six==1.17.0 # via python-dateutil sortedcontainers==2.4.0 # via distributed -tblib==3.0.0 +tblib==3.1.0 # via distributed toolz==1.0.0 # via # dask # distributed # partd -tornado==6.4.2 +tornado==6.5.2 # via # bokeh # distributed -types-pytz==2024.2.0.20241221 +types-pytz==2025.2.0.20250809 # via # emsarray (pyproject.toml) # pandas-stubs -typing-extensions==4.12.2 +typing-extensions==4.14.1 # via mypy -tzdata==2025.1 +tzdata==2025.2 # via pandas -urllib3==2.3.0 +urllib3==2.5.0 # via # distributed # requests -xarray[parallel]==2025.1.1 +xarray[parallel]==2025.8.0 # via # emsarray # emsarray (pyproject.toml) -xyzservices==2025.1.0 +xyzservices==2025.4.0 # via bokeh zict==3.0.0 # via distributed diff --git a/continuous-integration/requirements-minimum.txt b/continuous-integration/requirements-minimum.txt index e550cdf8..380e0da9 100644 --- a/continuous-integration/requirements-minimum.txt +++ b/continuous-integration/requirements-minimum.txt @@ -4,13 +4,13 @@ # # pip-compile --extra=complete --output-file=./continuous-integration/requirements-minimum.txt --strip-extras --unsafe-package=certifi --unsafe-package=emsarray --unsafe-package=pytz --unsafe-package=tzdata pyproject.toml # -bokeh~=3.4.3 +bokeh~=3.6.3 # via dask -bottleneck~=1.3.8 +bottleneck~=1.4.2 # via # emsarray # emsarray (pyproject.toml) -cartopy~=0.22.0 +cartopy~=0.23.0 # via emsarray cftime~=1.6.4.post1 # via @@ -34,30 +34,33 @@ contourpy~=1.2.1 # matplotlib cycler~=0.12.1 # via matplotlib -dask~=2024.1.1 +dask~=2024.12.1 # via + # dask-expr # distributed # xarray -distributed~=2024.1.1 +dask-expr~=1.1.21 # via dask -fonttools~=4.47.2 +distributed~=2024.12.1 + # via dask +fonttools~=4.53.1 # via matplotlib -fsspec~=2023.12.2 +fsspec~=2024.6.1 # via dask geojson~=3.1.0 # via # emsarray # emsarray (pyproject.toml) -idna~=3.6 +idna~=3.10 # via requests -importlib-metadata~=7.0.2 +importlib-metadata~=8.2.0 # via dask -jinja2~=3.1.5 +jinja2~=3.1.6 # via # bokeh # dask # distributed -kiwisolver~=1.4.8 +kiwisolver~=1.4.9 # via matplotlib locket~=1.0.0 # via @@ -67,17 +70,17 @@ lz4~=4.3.3 # via dask markupsafe~=2.1.5 # via jinja2 -matplotlib~=3.8.4 +matplotlib~=3.9.4 # via # cartopy # emsarray -msgpack~=1.0.8 +msgpack~=1.1.1 # via distributed -netcdf4~=1.6.5 +netcdf4~=1.7.2 # via # emsarray # emsarray (pyproject.toml) -numpy~=1.25.2 +numpy~=1.26.4 # via # bokeh # bottleneck @@ -95,7 +98,7 @@ numpy~=1.25.2 # pykdtree # shapely # xarray -packaging~=23.2 +packaging~=24.2 # via # bokeh # cartopy @@ -111,23 +114,24 @@ pandas~=2.2.3 # via # bokeh # dask + # dask-expr # xarray partd~=1.4.2 # via dask -pillow~=10.2.0 +pillow~=10.4.0 # via # bokeh # matplotlib -platformdirs~=4.1.0 +platformdirs~=4.2.2 # via pooch pooch~=1.8.2 # via emsarray -psutil~=5.9.8 +psutil~=6.0.0 # via distributed -pyarrow~=15.0.2 - # via dask -pyarrow-hotfix~=0.6 - # via dask +pyarrow~=17.0.0 + # via + # dask + # dask-expr pykdtree~=1.3.13 # via emsarray pyparsing~=3.1.4 @@ -139,7 +143,7 @@ pyshp~=2.3.1 # cartopy # emsarray # emsarray (pyproject.toml) -python-dateutil~=2.8.2 +python-dateutil~=2.9.0.post0 # via # matplotlib # pandas @@ -148,9 +152,9 @@ pyyaml~=6.0.2 # bokeh # dask # distributed -requests~=2.31.0 +requests~=2.32.4 # via pooch -shapely~=2.0.6 +shapely~=2.0.7 # via # cartopy # emsarray @@ -170,19 +174,19 @@ tornado~=6.4.2 # via # bokeh # distributed -urllib3~=2.1.0 +urllib3~=2.2.3 # via # distributed # requests -xarray~=2024.1.1 +xarray~=2024.7.0 # via # emsarray # emsarray (pyproject.toml) -xyzservices~=2023.10.1 +xyzservices~=2024.6.0 # via bokeh zict~=3.0.0 # via distributed -zipp~=3.17.0 +zipp~=3.20.2 # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: @@ -191,5 +195,5 @@ zipp~=3.17.0 # pytz # tzdata pytz -certifi tzdata +certifi diff --git a/docs/releases/development.rst b/docs/releases/development.rst index 3ffd7699..e18e1fd6 100644 --- a/docs/releases/development.rst +++ b/docs/releases/development.rst @@ -8,3 +8,4 @@ Next release (in development) * Added an example to the documentation showing :ref:`how to set the clim parameter in plots ` (:pr:`179`). +* Bumped pinned dependencies (:pr:`183`). diff --git a/pyproject.toml b/pyproject.toml index e18245b1..1173fb3d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -110,7 +110,6 @@ mpl-use-full-test-name = true [tool.mypy] python_version = "3.11" -plugins = ["numpy.typing.mypy_plugin"] disallow_untyped_defs = true warn_return_any = true diff --git a/scripts/update_pinned_dependencies.sh b/scripts/update_pinned_dependencies.sh index 23a5f40d..b8d4680c 100755 --- a/scripts/update_pinned_dependencies.sh +++ b/scripts/update_pinned_dependencies.sh @@ -6,6 +6,8 @@ PYTHON_VERSIONS=('3.11' '3.12' '3.13') HERE="$( cd -- "$( realpath -- "$( dirname -- "$0" )" )" && pwd )" PROJECT_ROOT="$( dirname "$HERE" )" +PIP_TOOLS='pip-tools!=7.5.0' + cd "$PROJECT_ROOT" conda_venv_root=$( mktemp -d emsarray-conda-environments.XXXXXXX ) @@ -26,7 +28,7 @@ conda install \ "python=${version}" pip conda run \ --prefix="${conda_prefix}" \ - pip install pip-tools packaging requests python-dateutil pip-tools + pip install "$PIP_TOOLS" packaging requests python-dateutil conda run \ --prefix="${conda_prefix}" \ python3 ./scripts/min_deps_check.py "$requirements_file" @@ -46,7 +48,7 @@ for version in "${PYTHON_VERSIONS[@]}" ; do --prefix="${conda_prefix}" \ --channel conda-forge \ "python=${version}" \ - pip-tools + "$PIP_TOOLS" conda run \ --prefix="${conda_prefix}" \ pip-compile \ diff --git a/src/emsarray/conventions/ugrid.py b/src/emsarray/conventions/ugrid.py index 7010b7fe..6d87b7e9 100644 --- a/src/emsarray/conventions/ugrid.py +++ b/src/emsarray/conventions/ugrid.py @@ -1262,7 +1262,10 @@ def integer_indexes(data_array: xarray.DataArray) -> numpy.ndarray: del topology_variables logger.debug("Slicing data variables...") - dimension_masks: dict[Hashable, numpy.ndarray] = { + dimension_masks: dict[Hashable, numpy.ndarray[ + tuple[Any, ...], + numpy.dtype[numpy.bool[bool]], + ] | numpy.bool[bool]] = { topology.node_dimension: ~numpy.ma.getmask(new_node_indexes), topology.face_dimension: ~numpy.ma.getmask(new_face_indexes), } @@ -1294,7 +1297,7 @@ def integer_indexes(data_array: xarray.DataArray) -> numpy.ndarray: if dim in dimension_masks: # ... make a tuple slice like (:, :, :, bool_array) # where bool_array indicates which rows to include - slice_index = tuple([numpy.s_[:]] * index + [dimension_masks[dim]]) # type: ignore + slice_index = tuple([numpy.s_[:]] * index + [dimension_masks[dim]]) values = values[slice_index] data_array = xarray.DataArray(data=values, dims=data_array.dims, name=name) diff --git a/tests/misc/test_xarray_timedelta_units.py b/tests/misc/test_xarray_timedelta_units.py index 7d8d80fe..36af2fa6 100644 --- a/tests/misc/test_xarray_timedelta_units.py +++ b/tests/misc/test_xarray_timedelta_units.py @@ -33,30 +33,6 @@ def make_dataset(): return dataset -@only_versions('xarray < 2023.09.0') -def test_xarray_timedelta_units_unsafe_cast( - tmp_path: pathlib.Path, -): - """ - When saving a dataset to disk, xarray.coding.times.cast_to_int_if_safe - will check if it is possible to encode a timedelta64 using integer values - by casting the values and checking for equality. - Recent versions of numpy will emit warnings - when casting a data array with dtype timedelta64 to int - if it contains NaT (not a time) values. - xarray fixed this but introduced a new issue instead. - - See also - ======== - https://github.com/pydata/xarray/issues/7942 - https://github.com/pydata/xarray/issues/9134 - - """ - dataset = make_dataset() - with pytest.warns(RuntimeWarning, match='invalid value encountered in cast'): - dataset.to_netcdf(tmp_path / "period.nc") - - @only_versions('xarray >= 2024.02.0, < 2025.03.0') def test_xarray_timedelta_units_cast_runtimewarning( tmp_path: pathlib.Path,