Skip to content

Commit 3e0d04c

Browse files
committed
Encapsulate duplicate product removal; apply to get_cloud_uris
1 parent 8e7fa23 commit 3e0d04c

File tree

1 file changed

+28
-6
lines changed

1 file changed

+28
-6
lines changed

astroquery/mast/observations.py

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -715,12 +715,7 @@ def download_products(self, products, *, download_dir=None,
715715
products = vstack(product_lists)
716716

717717
# Remove duplicate products
718-
number = len(products)
719-
products = unique(products, keys="dataURI")
720-
number_unique = len(products)
721-
if number_unique < number:
722-
warnings.warn(f"{number - number_unique} of {number} products were duplicates."
723-
f"Only downloading {number_unique} unique product(s).", DuplicateResultsWarning)
718+
products = self._remove_duplicate_products(products)
724719

725720
# apply filters
726721
products = self.filter_products(products, mrp_only=mrp_only, **filters)
@@ -773,6 +768,9 @@ def get_cloud_uris(self, data_products, *, include_bucket=True, full_url=False):
773768
raise RemoteServiceError('Please enable anonymous cloud access by calling `enable_cloud_dataset` method. '
774769
'See MAST Labs documentation for an example: https://mast-labs.stsci.io/#example-data-access-with-astroquery-observations')
775770

771+
# Remove duplicate products
772+
products = self._remove_duplicate_products(products)
773+
776774
return self._cloud_connection.get_cloud_uri_list(data_products, include_bucket, full_url)
777775

778776
def get_cloud_uri(self, data_product, *, include_bucket=True, full_url=False):
@@ -808,6 +806,30 @@ def get_cloud_uri(self, data_product, *, include_bucket=True, full_url=False):
808806
# Query for product URIs
809807
return self._cloud_connection.get_cloud_uri(data_product, include_bucket, full_url)
810808

809+
def _remove_duplicate_products(self, data_products):
810+
"""
811+
Removes duplicate data products that have the same dataURI.
812+
813+
Parameters
814+
----------
815+
data_products : `~astropy.table.Table`
816+
Table containing products to be checked for duplicates.
817+
818+
Returns
819+
-------
820+
unique_products : `~astropy.table.Table`
821+
Table containing products with unique dataURIs.
822+
823+
"""
824+
number = len(data_products)
825+
unique_products = unique(data_products, keys="dataURI")
826+
number_unique = len(unique_products)
827+
if number_unique < number:
828+
warnings.warn(f"{number - number_unique} of {number} products were duplicates."
829+
f"Only downloading {number_unique} unique product(s).", DuplicateResultsWarning)
830+
831+
return unique_products
832+
811833

812834
@async_to_sync
813835
class MastClass(MastQueryWithLogin):

0 commit comments

Comments
 (0)