Skip to content

Commit e19a779

Browse files
authored
Merge pull request #3065 from snbianco/ASB-25227-catalogs-page-size
Bugfix for pagesize and page parameters in catalogs.query_criteria()
2 parents d78af7b + 126ea05 commit e19a779

File tree

4 files changed

+42
-10
lines changed

4 files changed

+42
-10
lines changed

CHANGES.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,8 @@ mast
162162

163163
- Add ``verbose`` parameter to modulate output in ``mast.observations.download_products`` method. [#3031]
164164

165+
- Fix bug in ``Catalogs.query_criteria()`` to use ``page`` and ``pagesize`` parameters correctly. [#3065]
166+
165167

166168

167169
0.4.7 (2024-03-08)

astroquery/mast/collections.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,8 @@ def query_criteria_async(self, catalog, *, pagesize=None, page=None, **criteria)
225225
226226
Parameters
227227
----------
228+
catalog : str
229+
The catalog to be queried.
228230
pagesize : int, optional
229231
Can be used to override the default pagesize.
230232
E.g. when using a slow internet connection.

astroquery/mast/services.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import numpy as np
1313

1414
from astropy.table import Table, MaskedColumn
15+
from astropy.utils.decorators import deprecated_renamed_argument
1516

1617
from ..query import BaseQuery
1718
from ..utils import async_to_sync
@@ -222,7 +223,8 @@ def _parse_result(self, response, verbose=False, data_key='data'):
222223
return result_table
223224

224225
@class_or_instance
225-
def service_request_async(self, service, params, page_size=None, page=None, use_json=False, **kwargs):
226+
@deprecated_renamed_argument('page_size', 'pagesize', since='0.4.8')
227+
def service_request_async(self, service, params, pagesize=None, page=None, use_json=False, **kwargs):
226228
"""
227229
Given a MAST fabric service and parameters, builds and executes a fabric microservice catalog query.
228230
See documentation `here <https://catalogs.mast.stsci.edu/docs/index.html>`__
@@ -234,7 +236,7 @@ def service_request_async(self, service, params, page_size=None, page=None, use_
234236
The MAST catalogs service to query. Should be present in self.SERVICES
235237
params : dict
236238
JSON object containing service parameters.
237-
page_size : int, optional
239+
pagesize : int, optional
238240
Default None.
239241
Can be used to override the default pagesize (set in configs) for this query only.
240242
E.g. when using a slow internet connection.
@@ -273,13 +275,13 @@ def service_request_async(self, service, params, page_size=None, page=None, use_
273275
catalogs_request = []
274276
if not page:
275277
page = params.pop('page', None)
276-
if not page_size:
277-
page_size = params.pop('page_size', None)
278+
if not pagesize:
279+
pagesize = params.pop('pagesize', None)
278280

279281
if page is not None:
280282
catalogs_request.append(('page', page))
281-
if page_size is not None:
282-
catalogs_request.append(('pagesize', page_size))
283+
if pagesize is not None:
284+
catalogs_request.append(('pagesize', pagesize))
283285

284286
if not use_json:
285287
# Decompose filters, sort
@@ -331,7 +333,7 @@ def _build_catalogs_params(self, params):
331333
if prop == 'format':
332334
# Ignore format changes
333335
continue
334-
elif prop == 'page_size':
336+
elif prop == 'pagesize':
335337
catalog_params.extend(('pagesize', value))
336338
elif prop == 'sort_by':
337339
# Loop through each value if list

astroquery/mast/tests/test_mast_remote.py

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -159,11 +159,14 @@ def test_mast_service_request(self):
159159
'dec': 54.5,
160160
'radius': 0.001}
161161

162-
result = Mast.service_request(service, params)
162+
result = Mast.service_request(service, params, pagesize=10, page=2)
163163

164164
# Is result in the right format
165165
assert isinstance(result, Table)
166166

167+
# Is result limited to ten rows
168+
assert len(result) == 10
169+
167170
# Are the GALEX observations in the results table
168171
assert "GALEX" in result['obs_collection']
169172

@@ -617,15 +620,18 @@ def check_result(result, row, exp_values):
617620
radius=0.01*u.deg, catalog="panstarrs",
618621
table="mean")
619622
row = np.where((result['objName'] == 'PSO J322.4622+12.1920') & (result['yFlags'] == 16777496))
623+
second_id = result[1]['objID']
620624
assert isinstance(result, Table)
621625
np.testing.assert_allclose(result[row]['distance'], 0.039381703406789904)
622626

623627
result = Catalogs.query_region("322.49324 12.16683",
624628
radius=0.01*u.deg, catalog="panstarrs",
625629
table="mean",
626-
page_size=3)
630+
pagesize=1,
631+
page=2)
627632
assert isinstance(result, Table)
628-
assert len(result) == 3
633+
assert len(result) == 1
634+
assert second_id == result[0]['objID']
629635

630636
result = Catalogs.query_region("158.47924 -7.30962",
631637
radius=in_radius,
@@ -673,6 +679,16 @@ def check_result(result, exp_values):
673679
radius=.001,
674680
catalog="TIC")
675681
check_result(result, {'ID': '1305764225'})
682+
second_id = result[1]['ID']
683+
684+
result = Catalogs.query_object("M10",
685+
radius=.001,
686+
catalog="TIC",
687+
pagesize=1,
688+
page=2)
689+
assert isinstance(result, Table)
690+
assert len(result) == 1
691+
assert second_id == result[0]['ID']
676692

677693
result = Catalogs.query_object("M10",
678694
radius=.001,
@@ -766,6 +782,16 @@ def check_result(result, exp_vals):
766782
Bmag=[30, 50],
767783
objType="STAR")
768784
check_result(result, {'ID': '81609218'})
785+
second_id = result[1]['ID']
786+
787+
result = Catalogs.query_criteria(catalog="Tic",
788+
Bmag=[30, 50],
789+
objType="STAR",
790+
pagesize=1,
791+
page=2)
792+
assert isinstance(result, Table)
793+
assert len(result) == 1
794+
assert second_id == result[0]['ID']
769795

770796
result = Catalogs.query_criteria(catalog="ctl",
771797
Tmag=[10.5, 11],

0 commit comments

Comments
 (0)