Skip to content

Commit 46498d5

Browse files
authored
Search returns same class as self - allowing subclassing (#417)
1 parent 9e5c354 commit 46498d5

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

intake_esm/core.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,7 @@ def search(
344344
.reset_index(drop=True)
345345
)
346346

347-
cat = esm_datastore({'esmcat': self.esmcat.dict(), 'df': esmcat_results})
347+
cat = self.__class__({'esmcat': self.esmcat.dict(), 'df': esmcat_results})
348348
if self.esmcat.has_multiple_variable_assets:
349349
requested_variables = query.get(
350350
self.esmcat.aggregation_control.variable_column_name, []

tests/test_core.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -411,3 +411,12 @@ def funcs(ds):
411411
new_cat.to_dataset_dict(
412412
xarray_open_kwargs={'backend_kwargs': {'storage_options': {'anon': True}}}
413413
)
414+
415+
416+
def test_subclassing_catalog():
417+
class ChildCatalog(intake_esm.esm_datastore):
418+
pass
419+
420+
cat = ChildCatalog(catalog_dict_records)
421+
scat = cat.search(variable=['FOO', 'BAR'])
422+
assert type(scat) is ChildCatalog

0 commit comments

Comments
 (0)