From 80f075f40f6017c83b7c205601790615a92313cf Mon Sep 17 00:00:00 2001 From: lewisblake Date: Tue, 21 Jun 2022 13:04:00 +0000 Subject: [PATCH 01/20] calc_vmr --- pyaerocom/helpers.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/pyaerocom/helpers.py b/pyaerocom/helpers.py index b2b227f21..048160576 100644 --- a/pyaerocom/helpers.py +++ b/pyaerocom/helpers.py @@ -6,6 +6,7 @@ import math as ma from collections import Counter from datetime import MINYEAR, date, datetime +from typing import Optional import iris import iris.analysis @@ -204,7 +205,7 @@ def tuple_list_to_lists(tuple_list): return list(map(list, zip(tuple_list))) -def make_dummy_cube_latlon(lat_res_deg=2, lon_res_deg=3, lat_range=None, lon_range=None): +def make_dummy_cube_latlon(lat_res_deg: float = 2, lon_res_deg: float = 3, lat_range: Optional[tuple(float, float)] = None, lon_range: Optional[tuple(float, float)] = None): """Make an empty Cube with given latitude and longitude resolution Dimensions will be lat, lon @@ -232,8 +233,10 @@ def make_dummy_cube_latlon(lat_res_deg=2, lon_res_deg=3, lat_range=None, lon_ran if lon_range is None: lon_range = (-180, 180) - lons = np.arange(lon_range[0] + lon_res_deg / 2, lon_range[1] + lon_res_deg / 2, lon_res_deg) - lats = np.arange(lat_range[0] + lat_res_deg / 2, lat_range[1] + lat_res_deg / 2, lat_res_deg) + breakpoint() + + lons = np.arange(lon_range[0] + (lon_res_deg / 2), lon_range[1] + (lon_res_deg / 2), lon_res_deg) + lats = np.arange(lat_range[0] + (lat_res_deg / 2), lat_range[1] + (lat_res_deg / 2), lat_res_deg) lon_circ = check_coord_circular(lons, modulus=360) latdim = iris.coords.DimCoord( From db94ef402f95ee6b187186dd6385c0e7a78b0825 Mon Sep 17 00:00:00 2001 From: lewisblake Date: Wed, 22 Jun 2022 06:57:46 +0000 Subject: [PATCH 02/20] fix lat/lon mix up --- pyaerocom/helpers.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/pyaerocom/helpers.py b/pyaerocom/helpers.py index 048160576..c032c213f 100644 --- a/pyaerocom/helpers.py +++ b/pyaerocom/helpers.py @@ -6,7 +6,7 @@ import math as ma from collections import Counter from datetime import MINYEAR, date, datetime -from typing import Optional +from typing import Optional, Tuple import iris import iris.analysis @@ -205,7 +205,7 @@ def tuple_list_to_lists(tuple_list): return list(map(list, zip(tuple_list))) -def make_dummy_cube_latlon(lat_res_deg: float = 2, lon_res_deg: float = 3, lat_range: Optional[tuple(float, float)] = None, lon_range: Optional[tuple(float, float)] = None): +def make_dummy_cube_latlon(lat_res_deg: float = 2, lon_res_deg: float = 3, lat_range: Optional[Tuple[float,float]] = None, lon_range: Optional[Tuple[float,float]] = None): """Make an empty Cube with given latitude and longitude resolution Dimensions will be lat, lon @@ -228,12 +228,11 @@ def make_dummy_cube_latlon(lat_res_deg: float = 2, lon_res_deg: float = 3, lat_r Cube dummy cube in input resolution """ + if lat_range is None: lat_range = (-90, 90) if lon_range is None: lon_range = (-180, 180) - - breakpoint() lons = np.arange(lon_range[0] + (lon_res_deg / 2), lon_range[1] + (lon_res_deg / 2), lon_res_deg) lats = np.arange(lat_range[0] + (lat_res_deg / 2), lat_range[1] + (lat_res_deg / 2), lat_res_deg) @@ -1713,14 +1712,14 @@ def make_dummy_cube( days_since_start = np.arange(len(times)) unit = get_variable(var_name).units - lat_range = (-180, 180) - lon_range = (-90, 90) - lat_res_deg = 90 - lon_res_deg = 45 + lat_range = (-90, 90) + lon_range = (-180, 180) + lat_res_deg = 45 + lon_res_deg = 90 time_unit = Unit(startstr, calendar="gregorian") - lons = np.arange(lon_range[0] + lon_res_deg / 2, lon_range[1] + lon_res_deg / 2, lon_res_deg) - lats = np.arange(lat_range[0] + lat_res_deg / 2, lat_range[1] + lat_res_deg / 2, lat_res_deg) + lons = np.arange(lon_range[0] + (lon_res_deg / 2), lon_range[1] + (lon_res_deg / 2), lon_res_deg) + lats = np.arange(lat_range[0] + (lat_res_deg / 2), lat_range[1] + (lat_res_deg / 2), lat_res_deg) latdim = iris.coords.DimCoord( lats, From 1dc6344c5fffb48fdeae221b327bb07d986272c1 Mon Sep 17 00:00:00 2001 From: lewisblake Date: Wed, 22 Jun 2022 07:35:50 +0000 Subject: [PATCH 03/20] Correct typing --- pyaerocom/helpers.py | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/pyaerocom/helpers.py b/pyaerocom/helpers.py index c032c213f..69e265866 100644 --- a/pyaerocom/helpers.py +++ b/pyaerocom/helpers.py @@ -6,7 +6,7 @@ import math as ma from collections import Counter from datetime import MINYEAR, date, datetime -from typing import Optional, Tuple +from typing import Optional, Union, Tuple, List # 3.9 onward can use generic types import iris import iris.analysis @@ -205,7 +205,12 @@ def tuple_list_to_lists(tuple_list): return list(map(list, zip(tuple_list))) -def make_dummy_cube_latlon(lat_res_deg: float = 2, lon_res_deg: float = 3, lat_range: Optional[Tuple[float,float]] = None, lon_range: Optional[Tuple[float,float]] = None): +def make_dummy_cube_latlon( + lat_res_deg: float = 2, + lon_res_deg: float = 3, + lat_range: Optional[Union[Tuple[float, float], List[float, float]]] = None, + lon_range: Optional[Union[Tuple[float, float], List[float, float]]] = None, +): """Make an empty Cube with given latitude and longitude resolution Dimensions will be lat, lon @@ -233,9 +238,13 @@ def make_dummy_cube_latlon(lat_res_deg: float = 2, lon_res_deg: float = 3, lat_r lat_range = (-90, 90) if lon_range is None: lon_range = (-180, 180) - - lons = np.arange(lon_range[0] + (lon_res_deg / 2), lon_range[1] + (lon_res_deg / 2), lon_res_deg) - lats = np.arange(lat_range[0] + (lat_res_deg / 2), lat_range[1] + (lat_res_deg / 2), lat_res_deg) + + lons = np.arange( + lon_range[0] + (lon_res_deg / 2), lon_range[1] + (lon_res_deg / 2), lon_res_deg + ) + lats = np.arange( + lat_range[0] + (lat_res_deg / 2), lat_range[1] + (lat_res_deg / 2), lat_res_deg + ) lon_circ = check_coord_circular(lons, modulus=360) latdim = iris.coords.DimCoord( @@ -1718,8 +1727,12 @@ def make_dummy_cube( lon_res_deg = 90 time_unit = Unit(startstr, calendar="gregorian") - lons = np.arange(lon_range[0] + (lon_res_deg / 2), lon_range[1] + (lon_res_deg / 2), lon_res_deg) - lats = np.arange(lat_range[0] + (lat_res_deg / 2), lat_range[1] + (lat_res_deg / 2), lat_res_deg) + lons = np.arange( + lon_range[0] + (lon_res_deg / 2), lon_range[1] + (lon_res_deg / 2), lon_res_deg + ) + lats = np.arange( + lat_range[0] + (lat_res_deg / 2), lat_range[1] + (lat_res_deg / 2), lat_res_deg + ) latdim = iris.coords.DimCoord( lats, From 7ae83b002805a5f7e357765d4b7092df4dd783fd Mon Sep 17 00:00:00 2001 From: lewisblake Date: Wed, 22 Jun 2022 08:14:30 +0000 Subject: [PATCH 04/20] Use sequence type hint --- pyaerocom/helpers.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyaerocom/helpers.py b/pyaerocom/helpers.py index 69e265866..c6087ca3c 100644 --- a/pyaerocom/helpers.py +++ b/pyaerocom/helpers.py @@ -6,7 +6,7 @@ import math as ma from collections import Counter from datetime import MINYEAR, date, datetime -from typing import Optional, Union, Tuple, List # 3.9 onward can use generic types +from typing import Optional, Sequence # 3.9 onward can use generic types import iris import iris.analysis @@ -208,8 +208,8 @@ def tuple_list_to_lists(tuple_list): def make_dummy_cube_latlon( lat_res_deg: float = 2, lon_res_deg: float = 3, - lat_range: Optional[Union[Tuple[float, float], List[float, float]]] = None, - lon_range: Optional[Union[Tuple[float, float], List[float, float]]] = None, + lat_range: Optional[Sequence[float]] = None, + lon_range: Optional[Sequence[float]] = None, ): """Make an empty Cube with given latitude and longitude resolution From 3a9a3bb1262134654253a1329c5bd86b0b0aace4 Mon Sep 17 00:00:00 2001 From: lewisblake Date: Wed, 22 Jun 2022 10:53:45 +0000 Subject: [PATCH 05/20] new type annotations --- pyaerocom/helpers.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/pyaerocom/helpers.py b/pyaerocom/helpers.py index c6087ca3c..00b94e08b 100644 --- a/pyaerocom/helpers.py +++ b/pyaerocom/helpers.py @@ -1,12 +1,11 @@ """ General helper methods for the pyaerocom library. """ - +from __future__ import annotations import logging import math as ma from collections import Counter from datetime import MINYEAR, date, datetime -from typing import Optional, Sequence # 3.9 onward can use generic types import iris import iris.analysis @@ -208,8 +207,8 @@ def tuple_list_to_lists(tuple_list): def make_dummy_cube_latlon( lat_res_deg: float = 2, lon_res_deg: float = 3, - lat_range: Optional[Sequence[float]] = None, - lon_range: Optional[Sequence[float]] = None, + lat_range: list[float] | None = (-90, 90), + lon_range: list[float] | None = (-180, 180), ): """Make an empty Cube with given latitude and longitude resolution @@ -234,10 +233,8 @@ def make_dummy_cube_latlon( dummy cube in input resolution """ - if lat_range is None: - lat_range = (-90, 90) - if lon_range is None: - lon_range = (-180, 180) + # Accept lists for lat_range and lon_range, but make sure correct length + assert len(lat_range) == 2 and len(lon_range) == 2 lons = np.arange( lon_range[0] + (lon_res_deg / 2), lon_range[1] + (lon_res_deg / 2), lon_res_deg From 4477ca3576acda7c31b11563a8467ad90c384bb9 Mon Sep 17 00:00:00 2001 From: lewisblake Date: Wed, 22 Jun 2022 11:16:56 +0000 Subject: [PATCH 06/20] remove None option --- pyaerocom/helpers.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyaerocom/helpers.py b/pyaerocom/helpers.py index 00b94e08b..12ac29a90 100644 --- a/pyaerocom/helpers.py +++ b/pyaerocom/helpers.py @@ -207,8 +207,8 @@ def tuple_list_to_lists(tuple_list): def make_dummy_cube_latlon( lat_res_deg: float = 2, lon_res_deg: float = 3, - lat_range: list[float] | None = (-90, 90), - lon_range: list[float] | None = (-180, 180), + lat_range: list[float] = (-90, 90), + lon_range: list[float] = (-180, 180), ): """Make an empty Cube with given latitude and longitude resolution From 306eae44c093213ee8c727626d3f6fcc3559548d Mon Sep 17 00:00:00 2001 From: lewisblake Date: Wed, 22 Jun 2022 11:20:09 +0000 Subject: [PATCH 07/20] correct type annotation and clean assert --- pyaerocom/helpers.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyaerocom/helpers.py b/pyaerocom/helpers.py index 12ac29a90..ee11be9a8 100644 --- a/pyaerocom/helpers.py +++ b/pyaerocom/helpers.py @@ -207,8 +207,8 @@ def tuple_list_to_lists(tuple_list): def make_dummy_cube_latlon( lat_res_deg: float = 2, lon_res_deg: float = 3, - lat_range: list[float] = (-90, 90), - lon_range: list[float] = (-180, 180), + lat_range: list[float] | tuple[float, float] = (-90, 90), + lon_range: list[float] | tuple[float, float] = (-180, 180), ): """Make an empty Cube with given latitude and longitude resolution @@ -234,7 +234,7 @@ def make_dummy_cube_latlon( """ # Accept lists for lat_range and lon_range, but make sure correct length - assert len(lat_range) == 2 and len(lon_range) == 2 + assert len(lat_range) == len(lon_range) == 2 lons = np.arange( lon_range[0] + (lon_res_deg / 2), lon_range[1] + (lon_res_deg / 2), lon_res_deg From 31453f7f8594329595c2b90e36e01b7c258248c6 Mon Sep 17 00:00:00 2001 From: lewisblake Date: Thu, 23 Jun 2022 08:18:46 +0000 Subject: [PATCH 08/20] space after first import --- pyaerocom/helpers.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pyaerocom/helpers.py b/pyaerocom/helpers.py index ee11be9a8..2e20f6fa9 100644 --- a/pyaerocom/helpers.py +++ b/pyaerocom/helpers.py @@ -2,6 +2,7 @@ General helper methods for the pyaerocom library. """ from __future__ import annotations + import logging import math as ma from collections import Counter From 83ce576977e0782a4dff937669b979a5facae0b3 Mon Sep 17 00:00:00 2001 From: Alvaro Valdebenito Date: Thu, 23 Jun 2022 13:11:17 +0200 Subject: [PATCH 09/20] update cache venv on CI --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 57e2ecca9..85b7cf416 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -75,7 +75,7 @@ jobs: path: | ~/.cache/pip .tox - key: ${{ runner.os }}-tox-${{ matrix.python-version }}-${{ hashFiles('setup.cfg') }} + key: ${{ runner.os }}-tox-${{ matrix.python-version }}-${{ hashFiles('setup.cfg', 'pyproject.toml') }} - name: Install Tox run: | python -m pip install --upgrade pip From ac5b95e739ce20c7a9a23e3b95d3c27e9545a35f Mon Sep 17 00:00:00 2001 From: Alvaro Valdebenito Date: Thu, 23 Jun 2022 13:35:40 +0200 Subject: [PATCH 10/20] update ignored RuntimeWarning messages --- pyaerocom/mathutils.py | 2 +- tests/test_ungriddeddata.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pyaerocom/mathutils.py b/pyaerocom/mathutils.py index 75527b63b..6223b1b19 100644 --- a/pyaerocom/mathutils.py +++ b/pyaerocom/mathutils.py @@ -187,7 +187,7 @@ def _nanmean_and_std(data): @ignore_warnings( - RuntimeWarning, "An input array is constant", "invalid value encountered in true_divide" + RuntimeWarning, "An input array is constant", "invalid value encountered in .*divide" ) def calc_statistics(data, ref_data, lowlim=None, highlim=None, min_num_valid=1, weights=None): """Calc statistical properties from two data arrays diff --git a/tests/test_ungriddeddata.py b/tests/test_ungriddeddata.py index 1658b88f3..ce0f5983b 100644 --- a/tests/test_ungriddeddata.py +++ b/tests/test_ungriddeddata.py @@ -212,7 +212,7 @@ def test_check_unit(data_scat_jungfraujoch): data_scat_jungfraujoch.check_unit("sc550aer", unit="m-1") -@pytest.mark.filterwarnings("ignore:invalid value encountered in true_divide:RuntimeWarning") +@pytest.mark.filterwarnings("ignore:invalid value encountered in .*divide:RuntimeWarning") def test_check_convert_var_units(data_scat_jungfraujoch): out = data_scat_jungfraujoch.check_convert_var_units("sc550aer", "m-1", inplace=False) From 8a9ece07d7ce7037033837a2ae3fa78a2b7578fc Mon Sep 17 00:00:00 2001 From: lewisblake Date: Thu, 23 Jun 2022 13:23:17 +0000 Subject: [PATCH 11/20] test make dummy cube --- tests/test_helpers.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/test_helpers.py b/tests/test_helpers.py index ab9e91df6..60d26c4cd 100644 --- a/tests/test_helpers.py +++ b/tests/test_helpers.py @@ -250,3 +250,14 @@ def test_extract_latlon_dataarray_no_matches_error(lat, lon): def test_seconds_in_periods(date, ts_type, days): seconds = timedelta(days=days) / timedelta(seconds=1) assert helpers.seconds_in_periods(np.datetime64(date), ts_type) == seconds + + +def test_make_dummy_cube(): + cube = helpers.make_dummy_cube("concpm10") + data = xr.DataArray.from_iris(cube) + # First coordinate does not exist in the dataarray. + lat = [90, -67.5, 22.2] + lon = [180, -135.0, 45.0] + subset = helpers.extract_latlon_dataarray(data, lat, lon, check_domain=True) + assert isinstance(subset, xr.DataArray) + assert len(subset.lat) == len(lat) - 1 and len(subset.lon) == len(lon) - 1 From 168f245fcdf33de761a39ba615fca94a5c34f84e Mon Sep 17 00:00:00 2001 From: lewisblake Date: Thu, 23 Jun 2022 13:25:35 +0000 Subject: [PATCH 12/20] cube only over 1 year for performance --- tests/test_helpers.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/test_helpers.py b/tests/test_helpers.py index 60d26c4cd..274d40ffd 100644 --- a/tests/test_helpers.py +++ b/tests/test_helpers.py @@ -253,8 +253,10 @@ def test_seconds_in_periods(date, ts_type, days): def test_make_dummy_cube(): - cube = helpers.make_dummy_cube("concpm10") + # make a dummy cube of an arbitrary variable name over one year + cube = helpers.make_dummy_cube("concpm10", start_yr=2020, stop_yr=2021) data = xr.DataArray.from_iris(cube) + breakpoint() # First coordinate does not exist in the dataarray. lat = [90, -67.5, 22.2] lon = [180, -135.0, 45.0] From c22f21c449d518b7c26f519dc549dc46ae45f53f Mon Sep 17 00:00:00 2001 From: Alvaro Valdebenito Date: Thu, 23 Jun 2022 15:56:07 +0200 Subject: [PATCH 13/20] cache srtm geonum files --- .github/workflows/CI.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 85b7cf416..00d4ee8e1 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -74,8 +74,9 @@ jobs: with: path: | ~/.cache/pip + ~/.cache/srtm .tox - key: ${{ runner.os }}-tox-${{ matrix.python-version }}-${{ hashFiles('setup.cfg', 'pyproject.toml') }} + key: ${{ runner.os }}-tox-${{ matrix.python-version }}-${{ hashFiles('setup.cfg', '') }} - name: Install Tox run: | python -m pip install --upgrade pip From c4a8472869e163c7397472506071e4f4906a82fa Mon Sep 17 00:00:00 2001 From: lewisblake Date: Fri, 24 Jun 2022 06:19:55 +0000 Subject: [PATCH 14/20] remove breakpoint() --- tests/test_helpers.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/test_helpers.py b/tests/test_helpers.py index 274d40ffd..f443799cb 100644 --- a/tests/test_helpers.py +++ b/tests/test_helpers.py @@ -256,7 +256,6 @@ def test_make_dummy_cube(): # make a dummy cube of an arbitrary variable name over one year cube = helpers.make_dummy_cube("concpm10", start_yr=2020, stop_yr=2021) data = xr.DataArray.from_iris(cube) - breakpoint() # First coordinate does not exist in the dataarray. lat = [90, -67.5, 22.2] lon = [180, -135.0, 45.0] From c3abf9d019617d991cdde1bf116ce6bcfdecf588 Mon Sep 17 00:00:00 2001 From: lewisblake Date: Fri, 24 Jun 2022 07:10:14 +0000 Subject: [PATCH 15/20] try caching geonum --- .github/workflows/CI.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 00d4ee8e1..8d606c1d7 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -75,6 +75,7 @@ jobs: path: | ~/.cache/pip ~/.cache/srtm + ~/.cache/geonum .tox key: ${{ runner.os }}-tox-${{ matrix.python-version }}-${{ hashFiles('setup.cfg', '') }} - name: Install Tox From 0154153e24376dc8b16b571b8f96e92f5cbf04f3 Mon Sep 17 00:00:00 2001 From: lewisblake Date: Fri, 24 Jun 2022 08:19:48 +0000 Subject: [PATCH 16/20] modify strm test to not fail is FileNotFoundError --- tests/test_geodesy.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/test_geodesy.py b/tests/test_geodesy.py index ca022cbf3..2fc978fe7 100644 --- a/tests/test_geodesy.py +++ b/tests/test_geodesy.py @@ -27,7 +27,10 @@ def test_is_within_radius_km(): def test_srtm_altitude(): - assert geodesy.get_topo_altitude(TEST_LAT, TEST_LON) == pytest.approx(207) + try: + assert geodesy.get_topo_altitude(TEST_LAT, TEST_LON) == pytest.approx(207) + except (FileNotFoundError): # this test can sporadically fail + pass @etopo1_unavail From 443eb872ba158c26606cad2a4acc2090ed03a3fd Mon Sep 17 00:00:00 2001 From: lewisblake Date: Fri, 24 Jun 2022 08:32:55 +0000 Subject: [PATCH 17/20] remove parantehsis --- tests/test_geodesy.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_geodesy.py b/tests/test_geodesy.py index 2fc978fe7..108e43684 100644 --- a/tests/test_geodesy.py +++ b/tests/test_geodesy.py @@ -29,7 +29,7 @@ def test_is_within_radius_km(): def test_srtm_altitude(): try: assert geodesy.get_topo_altitude(TEST_LAT, TEST_LON) == pytest.approx(207) - except (FileNotFoundError): # this test can sporadically fail + except FileNotFoundError: # this test can sporadically fail pass From e1ea785c371a4728c7590262e27355b04a58782e Mon Sep 17 00:00:00 2001 From: lewisblake Date: Fri, 24 Jun 2022 08:33:16 +0000 Subject: [PATCH 18/20] remove .geonum from pytest cache --- .github/workflows/CI.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 8d606c1d7..00d4ee8e1 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -75,7 +75,6 @@ jobs: path: | ~/.cache/pip ~/.cache/srtm - ~/.cache/geonum .tox key: ${{ runner.os }}-tox-${{ matrix.python-version }}-${{ hashFiles('setup.cfg', '') }} - name: Install Tox From 168be807346cb577e0f31539b64dd38ec94de75b Mon Sep 17 00:00:00 2001 From: lewisblake Date: Fri, 24 Jun 2022 11:08:28 +0000 Subject: [PATCH 19/20] requested changes --- .github/workflows/CI.yml | 2 +- tests/test_geodesy.py | 8 ++++---- tests/test_helpers.py | 3 ++- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 00d4ee8e1..985b09320 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -76,7 +76,7 @@ jobs: ~/.cache/pip ~/.cache/srtm .tox - key: ${{ runner.os }}-tox-${{ matrix.python-version }}-${{ hashFiles('setup.cfg', '') }} + key: ${{ runner.os }}-tox-${{ matrix.python-version }}-${{ hashFiles('setup.cfg', 'pyproject.toml') }} - name: Install Tox run: | python -m pip install --upgrade pip diff --git a/tests/test_geodesy.py b/tests/test_geodesy.py index 108e43684..632d687e5 100644 --- a/tests/test_geodesy.py +++ b/tests/test_geodesy.py @@ -26,11 +26,11 @@ def test_is_within_radius_km(): assert geodesy.is_within_radius_km(0, 15, 0, 16, 1000, 111.2) +@pytest.mark.xfail( + reason="fails in CI when geonum can not download 'srtm' data", raises=FileNotFoundError +) def test_srtm_altitude(): - try: - assert geodesy.get_topo_altitude(TEST_LAT, TEST_LON) == pytest.approx(207) - except FileNotFoundError: # this test can sporadically fail - pass + assert geodesy.get_topo_altitude(TEST_LAT, TEST_LON) == pytest.approx(207) @etopo1_unavail diff --git a/tests/test_helpers.py b/tests/test_helpers.py index f443799cb..0949047ff 100644 --- a/tests/test_helpers.py +++ b/tests/test_helpers.py @@ -261,4 +261,5 @@ def test_make_dummy_cube(): lon = [180, -135.0, 45.0] subset = helpers.extract_latlon_dataarray(data, lat, lon, check_domain=True) assert isinstance(subset, xr.DataArray) - assert len(subset.lat) == len(lat) - 1 and len(subset.lon) == len(lon) - 1 + assert len(subset.lat) == len(lat) - 1 + assert len(subset.lon) == len(lon) - 1 From 4a9da902956f413ccf7d4c56294ea7b90de0620b Mon Sep 17 00:00:00 2001 From: lewisblake Date: Fri, 24 Jun 2022 11:26:40 +0000 Subject: [PATCH 20/20] requested changes 2 --- tests/test_geodesy.py | 4 +++- tests/test_helpers.py | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/tests/test_geodesy.py b/tests/test_geodesy.py index 632d687e5..f1a53d451 100644 --- a/tests/test_geodesy.py +++ b/tests/test_geodesy.py @@ -27,7 +27,9 @@ def test_is_within_radius_km(): @pytest.mark.xfail( - reason="fails in CI when geonum can not download 'srtm' data", raises=FileNotFoundError + reason="fails in CI when geonum can not download 'srtm' data", + raises=FileNotFoundError, + strict=False, ) def test_srtm_altitude(): assert geodesy.get_topo_altitude(TEST_LAT, TEST_LON) == pytest.approx(207) diff --git a/tests/test_helpers.py b/tests/test_helpers.py index 0949047ff..aa58b8d92 100644 --- a/tests/test_helpers.py +++ b/tests/test_helpers.py @@ -209,7 +209,8 @@ def test_extract_latlon_dataarray(): lon = [1, 15, 18] subset = helpers.extract_latlon_dataarray(data, lat, lon, check_domain=True) assert isinstance(subset, xr.DataArray) - assert len(subset.lat) == len(lat) - 1 and len(subset.lon) == len(lon) - 1 + assert len(subset.lat) == len(lat) - 1 + assert len(subset.lon) == len(lon) - 1 def test_extract_latlon_dataarray_no_matches():