From 46dada6dd0a2f6d927a5d4b9499a498e87958619 Mon Sep 17 00:00:00 2001 From: "Peter A. Jonsson" Date: Mon, 7 Apr 2025 11:38:59 +0200 Subject: [PATCH 1/3] conftest: ignore winding warning --- integration_tests/conftest.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/integration_tests/conftest.py b/integration_tests/conftest.py index 99db67c28..25f85d7df 100644 --- a/integration_tests/conftest.py +++ b/integration_tests/conftest.py @@ -7,6 +7,7 @@ """ import itertools import os +import warnings from copy import copy, deepcopy from datetime import timedelta from pathlib import Path @@ -15,6 +16,7 @@ import pytest import yaml +from antimeridian import FixWindingWarning from click.testing import CliRunner from hypothesis import HealthCheck, settings from sqlalchemy import text @@ -264,7 +266,9 @@ def doc_to_ds(index, product_name, ds_doc, ds_path, src_tree=None, derived_tree= ds.source_tree = src_tree if derived_tree is not None: ds.derived_tree = derived_tree - index.datasets.add(ds, with_lineage=index.supports_lineage) + with warnings.catch_warnings(): + warnings.simplefilter('ignore', FixWindingWarning) + index.datasets.add(ds, with_lineage=index.supports_lineage) return index.datasets.get(ds.id) From 7fba8b376b49f5c0c754d8c32ac4eb9c0a66c26b Mon Sep 17 00:00:00 2001 From: "Peter A. Jonsson" Date: Mon, 7 Apr 2025 14:06:45 +0200 Subject: [PATCH 2/3] pytest: ignore numpy size warning I'm not sure if there is anything we can do to fix this warning, but having the warning in our output does not improve the situation, so ignore it for now. --- pytest.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/pytest.ini b/pytest.ini index 900b10fe8..0023afcba 100644 --- a/pytest.ini +++ b/pytest.ini @@ -5,3 +5,4 @@ norecursedirs = .* build dist .git tmp* filterwarnings = ignore::FutureWarning ignore:datetime.datetime.utcnow*:DeprecationWarning:botocore.* + ignore:.*numpy.ndarray size changed.*: From dcd3b21135168f6b1366d1fe92a88259491d2ae7 Mon Sep 17 00:00:00 2001 From: "Peter A. Jonsson" Date: Mon, 7 Apr 2025 11:36:55 +0200 Subject: [PATCH 3/3] tests: ignore more winding warnings Some datasets used in testing are wound clockwise, so ignore the winding warning in these tests. --- integration_tests/index/test_index_cloning.py | 5 +++++ integration_tests/index/test_index_data.py | 11 +++++++++++ integration_tests/index/test_memory_index.py | 1 + integration_tests/index/test_postgis_index.py | 2 ++ integration_tests/index/test_search_eo3.py | 8 ++++++-- integration_tests/test_3d.py | 3 +++ integration_tests/test_cli_output.py | 3 +++ 7 files changed, 31 insertions(+), 2 deletions(-) diff --git a/integration_tests/index/test_index_cloning.py b/integration_tests/index/test_index_cloning.py index 0727aebda..afb640746 100644 --- a/integration_tests/index/test_index_cloning.py +++ b/integration_tests/index/test_index_cloning.py @@ -2,8 +2,10 @@ # # Copyright (c) 2015-2025 ODC Contributors # SPDX-License-Identifier: Apache-2.0 +import pytest +@pytest.mark.filterwarnings("ignore::antimeridian.FixWindingWarning") def test_index_clone(index_pair_populated_empty): pop_idx, empty_idx = index_pair_populated_empty assert list(empty_idx.products.get_all()) == [] @@ -14,6 +16,7 @@ def test_index_clone(index_pair_populated_empty): assert results["datasets"].skipped == 0 +@pytest.mark.filterwarnings("ignore::antimeridian.FixWindingWarning") def test_index_clone_small_batch(index_pair_populated_empty): pop_idx, empty_idx = index_pair_populated_empty assert list(empty_idx.products.get_all()) == [] @@ -24,6 +27,7 @@ def test_index_clone_small_batch(index_pair_populated_empty): assert results["datasets"].skipped == 0 +@pytest.mark.filterwarnings("ignore::antimeridian.FixWindingWarning") def test_index_clone_cli(cfg_env_pair, index_pair_populated_empty, clirunner): source_cfg, target_cfg = cfg_env_pair clirunner([ @@ -39,6 +43,7 @@ def test_index_clone_cli(cfg_env_pair, index_pair_populated_empty, clirunner): ], skip_env=True, expect_success=True) +@pytest.mark.filterwarnings("ignore::antimeridian.FixWindingWarning") def test_index_clone_cli_small_batch(cfg_env_pair, index_pair_populated_empty, clirunner): source_cfg, target_cfg = cfg_env_pair clirunner([ diff --git a/integration_tests/index/test_index_data.py b/integration_tests/index/test_index_data.py index 31281f3f8..86211b335 100755 --- a/integration_tests/index/test_index_data.py +++ b/integration_tests/index/test_index_data.py @@ -92,6 +92,7 @@ def test_archive_datasets(index, ls8_eo3_dataset): assert not indexed_dataset.is_archived +@pytest.mark.filterwarnings("ignore::antimeridian.FixWindingWarning") def test_archive_less_mature(index, final_dataset, nrt_dataset, ds_no_region): # case 1: add nrt then final; nrt should get archived index.datasets.add(nrt_dataset, with_lineage=False, archive_less_mature=True) @@ -108,6 +109,7 @@ def test_archive_less_mature(index, final_dataset, nrt_dataset, ds_no_region): index.datasets.add(nrt_dataset, with_lineage=False, archive_less_mature=True) +@pytest.mark.filterwarnings("ignore::antimeridian.FixWindingWarning") def test_cannot_search_for_less_mature(index, nrt_dataset, ds_no_region): # if a dataset is missing a property required for finding less mature datasets, # it should error @@ -118,6 +120,7 @@ def test_cannot_search_for_less_mature(index, nrt_dataset, ds_no_region): index.datasets.add(ds_no_region, with_lineage=False, archive_less_mature=0) +@pytest.mark.filterwarnings("ignore::antimeridian.FixWindingWarning") def test_archive_less_mature_approx_timestamp(index, ga_s2am_ard3_final, ga_s2am_ard3_interim): # test archive_less_mature where there's a slight difference in timestamps index.datasets.add(ga_s2am_ard3_interim, with_lineage=False) @@ -127,6 +130,7 @@ def test_archive_less_mature_approx_timestamp(index, ga_s2am_ard3_final, ga_s2am assert not index.datasets.get(ga_s2am_ard3_final.id).is_archived +@pytest.mark.filterwarnings("ignore::antimeridian.FixWindingWarning") def test_dont_archive_less_mature(index, final_dataset, nrt_dataset): # ensure datasets aren't archive if no archive_less_mature value is provided index.datasets.add(nrt_dataset, with_lineage=False) @@ -136,6 +140,7 @@ def test_dont_archive_less_mature(index, final_dataset, nrt_dataset): assert not index.datasets.get(final_dataset.id).is_archived +@pytest.mark.filterwarnings("ignore::antimeridian.FixWindingWarning") def test_archive_less_mature_bool(index, final_dataset, nrt_dataset): # if archive_less_mature value gets passed as a bool via an outdated script index.datasets.add(nrt_dataset, with_lineage=False) @@ -258,6 +263,7 @@ def test_get_dataset(index: Index, ls8_eo3_dataset: Dataset) -> None: 'f226a278-e422-11e6-b501-185e0f80a5c1']) == [] +@pytest.mark.filterwarnings("ignore::antimeridian.FixWindingWarning") def test_add_dataset_no_product_id(index: Index, extended_eo3_metadata_type, ls8_eo3_product, eo3_ls8_dataset_doc): product_no_id = Product(extended_eo3_metadata_type, ls8_eo3_product.definition) assert product_no_id.id is None @@ -266,6 +272,7 @@ def test_add_dataset_no_product_id(index: Index, extended_eo3_metadata_type, ls8 assert index.datasets.add(dataset, with_lineage=False) +@pytest.mark.filterwarnings("ignore::antimeridian.FixWindingWarning") def test_transactions_api_ctx_mgr(index, extended_eo3_metadata_type_doc, ls8_eo3_product, @@ -296,6 +303,7 @@ def test_transactions_api_ctx_mgr(index, assert index.datasets.get(ds2.id) is None +@pytest.mark.filterwarnings("ignore::antimeridian.FixWindingWarning") def test_transactions_api_ctx_mgr_nested(index, extended_eo3_metadata_type_doc, ls8_eo3_product, @@ -329,6 +337,7 @@ def test_transactions_api_ctx_mgr_nested(index, assert index.datasets.get(ds2.id) is None +@pytest.mark.filterwarnings("ignore::antimeridian.FixWindingWarning") def test_transactions_api_manual(index, extended_eo3_metadata_type_doc, ls8_eo3_product, @@ -355,6 +364,7 @@ def test_transactions_api_manual(index, assert index.datasets.get(ds2.id) is not None +@pytest.mark.filterwarnings("ignore::antimeridian.FixWindingWarning") def test_transactions_api_hybrid(index, extended_eo3_metadata_type_doc, ls8_eo3_product, @@ -434,6 +444,7 @@ def test_index_dataset_with_sources(index, default_metadata_type): @pytest.mark.parametrize('datacube_env_name', ('postgis',)) +@pytest.mark.filterwarnings("ignore::antimeridian.FixWindingWarning") def test_index_dataset_with_lineage(index, ds_with_lineage, ls8_eo3_dataset): assert ds_with_lineage.source_tree index.datasets.add(ds_with_lineage) diff --git a/integration_tests/index/test_memory_index.py b/integration_tests/index/test_memory_index.py index 1b1c83c6b..22472679f 100644 --- a/integration_tests/index/test_memory_index.py +++ b/integration_tests/index/test_memory_index.py @@ -729,6 +729,7 @@ def test_default_clone_bulk_ops_multiloc( assert len(mem_index_fresh.index.datasets.get(ls8_eo3_dataset.id)._uris) == 2 +@pytest.mark.filterwarnings("ignore::antimeridian.FixWindingWarning") def test_default_clone_bulk_ops_reverse(mem_eo3_data: tuple, index): mem_idx, ls8id, woid = mem_eo3_data index.clone(mem_idx.index) diff --git a/integration_tests/index/test_postgis_index.py b/integration_tests/index/test_postgis_index.py index 6cad4af90..cdd884ad1 100644 --- a/integration_tests/index/test_postgis_index.py +++ b/integration_tests/index/test_postgis_index.py @@ -35,6 +35,7 @@ def test_create_drop_spatial_index(index: Index): @pytest.mark.parametrize('datacube_env_name', ('postgis',)) +@pytest.mark.filterwarnings("ignore::antimeridian.FixWindingWarning") def test_spatial_index_maintain(index: Index, ls8_eo3_product, eo3_ls8_dataset_doc): index.create_spatial_index(CRS("EPSG:3577")) assert set(index.spatial_indexes(refresh=True)) == {CRS("EPSG:3577"), CRS("EPSG:4326")} @@ -50,6 +51,7 @@ def test_spatial_index_maintain(index: Index, ls8_eo3_product, eo3_ls8_dataset_d @pytest.mark.parametrize('datacube_env_name', ('postgis',)) +@pytest.mark.filterwarnings("ignore::antimeridian.FixWindingWarning") def test_spatial_index_populate(index: Index, ls8_eo3_product, wo_eo3_product, diff --git a/integration_tests/index/test_search_eo3.py b/integration_tests/index/test_search_eo3.py index 1fa045296..a00b71062 100644 --- a/integration_tests/index/test_search_eo3.py +++ b/integration_tests/index/test_search_eo3.py @@ -6,6 +6,8 @@ Module """ import datetime +import warnings +from antimeridian import FixWindingWarning from typing import Any from collections import namedtuple @@ -1001,8 +1003,10 @@ def test_find_duplicates_eo3(index, def test_find_duplicates_with_time(index, nrt_dataset, final_dataset, ls8_eo3_dataset): - index.datasets.add(nrt_dataset, with_lineage=False) - index.datasets.add(final_dataset, with_lineage=False) + with warnings.catch_warnings(): + warnings.simplefilter('ignore', FixWindingWarning) + index.datasets.add(nrt_dataset, with_lineage=False) + index.datasets.add(final_dataset, with_lineage=False) assert not index.datasets.get(nrt_dataset.id).is_archived assert not index.datasets.get(final_dataset.id).is_archived diff --git a/integration_tests/test_3d.py b/integration_tests/test_3d.py index a518a3435..6ede2fb9e 100644 --- a/integration_tests/test_3d.py +++ b/integration_tests/test_3d.py @@ -239,6 +239,7 @@ def test_missing_extra_dimensions(clirunner, invalid_dataset_type_paths): @pytest.mark.usefixtures("default_metadata_type") +@pytest.mark.filterwarnings("ignore::antimeridian.FixWindingWarning") def test_indexing(clirunner, index, product_def): """Test indexing features for 2D and 3D products. @@ -301,6 +302,7 @@ def test_indexing(clirunner, index, product_def): @pytest.mark.usefixtures("default_metadata_type") +@pytest.mark.filterwarnings("ignore::antimeridian.FixWindingWarning") def test_indexing_with_spectral_map(clirunner, index, dataset_types): """Test indexing features with spectral map.""" product_id = GEDI_PRODUCT_IDS[0] @@ -321,6 +323,7 @@ def test_indexing_with_spectral_map(clirunner, index, dataset_types): @pytest.mark.usefixtures("default_metadata_type") +@pytest.mark.filterwarnings("ignore::antimeridian.FixWindingWarning") def test_end_to_end_multitime(clirunner, index, product_def, original_data): """Test simple indexing but for multiple measurements and wavelengths.""" dc = Datacube(index=index) diff --git a/integration_tests/test_cli_output.py b/integration_tests/test_cli_output.py index e4e523405..e37b7079e 100644 --- a/integration_tests/test_cli_output.py +++ b/integration_tests/test_cli_output.py @@ -2,6 +2,7 @@ # # Copyright (c) 2015-2025 ODC Contributors # SPDX-License-Identifier: Apache-2.0 +import pytest def test_cli_product_subcommand(index_empty, clirunner, dataset_add_configs): @@ -60,6 +61,7 @@ def test_cli_metadata_subcommand(index_empty, clirunner, dataset_add_configs): assert runner.exit_code == 1 +@pytest.mark.filterwarnings("ignore::antimeridian.FixWindingWarning") def test_cli_dataset_subcommand(index, clirunner, extended_eo3_metadata_type, ls8_eo3_product, wo_eo3_product, africa_s2_eo3_product, @@ -153,6 +155,7 @@ def test_cli_dataset_subcommand(index, clirunner, assert runner.exit_code == 0 +@pytest.mark.filterwarnings("ignore::antimeridian.FixWindingWarning") def test_read_and_update_metadata_product_dataset_command(index, clirunner, ext_eo3_mdt_path, eo3_product_paths,