From 671ab9ea7f3322bad5d8f3586f46ab1065cd562a Mon Sep 17 00:00:00 2001 From: briannapagan Date: Tue, 3 Sep 2024 13:16:14 -0400 Subject: [PATCH 1/5] consolidate query call, add changelog, correct test typo --- CHANGELOG.md | 1 + cmr/queries.py | 13 +++++++++++++ tests/test_variable.py | 7 +++++++ 3 files changed, 21 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e910ca5..ebbe5cf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - Support multi-point searches ([#72](https://github.com/nasa/python_cmr/issues/72)) - Support `processing_level_id` in `CollectionQuery` ([#76](https://github.com/nasa/python_cmr/issues/76)) - Support `platform` in `CollectionQuery` ([#77](https://github.com/nasa/python_cmr/issues/77)) +- Support `instance-format` to `VariableQuery` to allow for searching of variable zarr stores ([#59]https://github.com/nasa/python_cmr/issues/59) ### Fixed - Setup vcrpy for new `revision_date` unit tests ([#70](https://github.com/nasa/python_cmr/issues/70)) diff --git a/cmr/queries.py b/cmr/queries.py index 4c1487f..0d22ade 100644 --- a/cmr/queries.py +++ b/cmr/queries.py @@ -1210,6 +1210,19 @@ def __init__(self, mode: str = CMR_OPS): "dif", "dif10", "opendata", "umm_json", "umm_json_v[0-9]_[0-9]" ]) + def instance_format(self, instance_format: str) -> Self: + """ + Filter by instance format. + + :param instance_format: format for variable instance + :returns: self + """ + + if instance_format: + self.params['instance_format'] = instance_format + + return self + @override def _valid_state(self) -> bool: return True diff --git a/tests/test_variable.py b/tests/test_variable.py index ca6963a..5d5b326 100644 --- a/tests/test_variable.py +++ b/tests/test_variable.py @@ -85,3 +85,10 @@ def bearer_test_token(self): self.assertIn("Authorization", query.headers) self.assertEqual(query.headers["Authorization"], "Bearer 123TOKEN") + + def test_instance_format(self): + query = VariableQuery() + query.instance_format("zarr") + + self.assertIn("instance_format", query.params) + self.assertEqual(query.params["instance_format"], "zarr") From cb6666310c02351137ec7154621e3ce346f4cacf Mon Sep 17 00:00:00 2001 From: briannapagan Date: Wed, 4 Sep 2024 11:36:16 -0400 Subject: [PATCH 2/5] support multiple values Co-authored-by: Chuck Daniels --- cmr/queries.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/cmr/queries.py b/cmr/queries.py index 0d22ade..df5cd6c 100644 --- a/cmr/queries.py +++ b/cmr/queries.py @@ -1210,19 +1210,21 @@ def __init__(self, mode: str = CMR_OPS): "dif", "dif10", "opendata", "umm_json", "umm_json_v[0-9]_[0-9]" ]) - def instance_format(self, instance_format: str) -> Self: + def instance_format(self, format: Union[str, Sequence[str]]) -> Self: """ - Filter by instance format. + Filter by instance format(s), matching any one of the specified formats. + Does nothing if `format` is an empty string or an empty sequence. - :param instance_format: format for variable instance + :param format: format(s) for variable instance (a single string, or sequence of + strings) :returns: self """ - if instance_format: - self.params['instance_format'] = instance_format + if format: + # Assume we have non-empty string or sequence of strings (list, tuple, etc.) + self.params['instance_format'] = [format] if isinstance(format, str) else format return self - @override def _valid_state(self) -> bool: return True From 9f59997aabf0e69df96b61a3f19e58fdd428c3ea Mon Sep 17 00:00:00 2001 From: briannapagan Date: Wed, 4 Sep 2024 11:36:40 -0400 Subject: [PATCH 3/5] Update CHANGELOG.md Co-authored-by: Chuck Daniels --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ebbe5cf..55661bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,7 +19,7 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - Support multi-point searches ([#72](https://github.com/nasa/python_cmr/issues/72)) - Support `processing_level_id` in `CollectionQuery` ([#76](https://github.com/nasa/python_cmr/issues/76)) - Support `platform` in `CollectionQuery` ([#77](https://github.com/nasa/python_cmr/issues/77)) -- Support `instance-format` to `VariableQuery` to allow for searching of variable zarr stores ([#59]https://github.com/nasa/python_cmr/issues/59) +- Support searching by instance format for `VariableQuery` ([#59]https://github.com/nasa/python_cmr/issues/59) ### Fixed - Setup vcrpy for new `revision_date` unit tests ([#70](https://github.com/nasa/python_cmr/issues/70)) From b987351f8aa333bb8e1293b451104157c6a95883 Mon Sep 17 00:00:00 2001 From: Frank Greguska <89428916+frankinspace@users.noreply.github.com> Date: Wed, 4 Sep 2024 09:31:55 -0700 Subject: [PATCH 4/5] Update tests/test_variable.py Co-authored-by: Chuck Daniels --- tests/test_variable.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/test_variable.py b/tests/test_variable.py index 5d5b326..cf9fc15 100644 --- a/tests/test_variable.py +++ b/tests/test_variable.py @@ -91,4 +91,11 @@ def test_instance_format(self): query.instance_format("zarr") self.assertIn("instance_format", query.params) - self.assertEqual(query.params["instance_format"], "zarr") + self.assertEqual(query.params["instance_format"], ["zarr"]) + + def test_instance_formats(self): + query = VariableQuery() + query.instance_format(["zarr", "kerchunk"]) + + self.assertIn("instance_format", query.params) + self.assertEqual(query.params["instance_format"], ["zarr", "kerchunk"]) From 01823e2c9d9f1efd168640a5f72e0dd8c9174db2 Mon Sep 17 00:00:00 2001 From: Frank Greguska <89428916+frankinspace@users.noreply.github.com> Date: Wed, 4 Sep 2024 09:36:30 -0700 Subject: [PATCH 5/5] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index b014f2f..0b9bd03 100644 --- a/README.md +++ b/README.md @@ -225,6 +225,9 @@ api.name('/AMR_Side_1/acc_lat') # Search via concept_id api.concept_id('V2112019824-POCLOUD') + +# Search via instance format +query.instance_format(["zarr", "kerchunk"]) ``` As an alternative to chaining methods together to set the parameters of your query, a method exists to allow you to pass