Skip to content

Commit f94614c

Browse files
mstcyr2bsipocz
authored andcommitted
MastClass query helper function
s
1 parent 70762dc commit f94614c

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

astroquery/mast/observations.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -909,6 +909,38 @@ def service_request_async(self, service, params, *, pagesize=None, page=None, **
909909

910910
return self._portal_api_connection.service_request_async(service, params, pagesize, page, **kwargs)
911911

912+
def mast_query(self, service, columns='*', **kwargs):
913+
# Specific keywords related to positional and MashupRequest parameters.
914+
position_keys = ['ra', 'dec', 'radius', 'position']
915+
request_keys = ['format', 'data', 'filename', 'timeout', 'clearcache',
916+
'removecache', 'removenullcolumns', 'page', 'pagesize']
917+
918+
# Explicit formatting for Mast's filtered services
919+
if 'Filtered' in service:
920+
921+
# Separating the filter params from the positional and service_request method params.
922+
filters = [{'paramName': k, 'values': kwargs[k]} for k in kwargs
923+
if k not in position_keys+request_keys]
924+
position_params = {k: v for k, v in kwargs.items() if k in position_keys}
925+
request_params = {k: v for k, v in kwargs.items() if k in request_keys}
926+
927+
# Mast's filtered services require at least one filter
928+
if filters == []:
929+
raise InvalidQueryError("Please provide at least one filter.")
930+
931+
# Building 'params' for Mast.service_request
932+
params = {'columns': columns,
933+
'filters': filters,
934+
**position_params
935+
}
936+
else:
937+
938+
# Separating service specific params from service_request method params
939+
params = {k: v for k, v in kwargs.items() if k not in request_keys}
940+
request_params = {k: v for k, v in kwargs.items() if k in request_keys}
941+
942+
return self.service_request(service, params, **request_params)
943+
912944

913945
Observations = ObservationsClass()
914946
Mast = MastClass()

0 commit comments

Comments
 (0)