Skip to content

Commit 4b29a35

Browse files
authored
Merge pull request #2635 from eerovaher/refactor-tap
Remove unused code from `utils.tap` and related sub-packages
2 parents 403a5d7 + 362d5be commit 4b29a35

File tree

13 files changed

+58
-173
lines changed

13 files changed

+58
-173
lines changed

astroquery/esa/hubble/core.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
European Space Agency (ESA)
99
1010
"""
11+
from urllib.parse import urlencode
1112

1213
from astropy import units
1314
from astropy.coordinates import SkyCoord
@@ -503,7 +504,7 @@ def _query_tap_target(self, target):
503504

504505
subContext = conf.EHST_TARGET_ACTION
505506
connHandler = self._tap._TapPlus__getconnhandler()
506-
data = connHandler.url_encode(params)
507+
data = urlencode(params)
507508
target_response = connHandler.execute_secure(subContext, data, True)
508509
for line in target_response:
509510
target_result = json.loads(line.decode("utf-8"))

astroquery/esa/jwst/core.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import tarfile
1717
import zipfile
1818
from datetime import datetime
19+
from urllib.parse import urlencode
1920

2021
from astropy import log
2122
from astropy import units
@@ -667,9 +668,8 @@ def set_token(self, token):
667668
MAST token to have access to propietary data
668669
"""
669670
subContext = conf.JWST_TOKEN
670-
args = {"token": token}
671+
data = urlencode({"token": token})
671672
connHandler = self.__jwsttap._TapPlus__getconnhandler()
672-
data = connHandler.url_encode(args)
673673
response = connHandler.execute_secure(subContext, data, True)
674674
if response.status == 403:
675675
print("ERROR: MAST tokens cannot be assigned or requested by anonymous users")

astroquery/esa/jwst/tests/test_jwsttap.py

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"""
1111
import os
1212
import shutil
13+
from pathlib import Path
1314
from unittest.mock import MagicMock
1415

1516
import astropy.units as u
@@ -28,12 +29,14 @@
2829
from astroquery.utils.tap.conn.tests.DummyConnHandler import DummyConnHandler
2930
from astroquery.utils.tap.conn.tests.DummyResponse import DummyResponse
3031
from astroquery.utils.tap.core import TapPlus
31-
from astroquery.utils.tap.xmlparser import utils
3232
from astroquery.vizier import Vizier
3333

3434
from astroquery.esa.jwst import conf
3535

3636

37+
JOB_DATA = (Path(__file__).with_name("data") / "job_1.vot").read_text()
38+
39+
3740
def data_path(filename):
3841
data_dir = os.path.join(os.path.dirname(__file__), 'data')
3942
return os.path.join(data_dir, filename)
@@ -234,9 +237,7 @@ def test_query_region(self):
234237
# Launch response: we use default response because the
235238
# query contains decimals
236239
responseLaunchJob = DummyResponse(200)
237-
jobDataFile = data_path('job_1.vot')
238-
jobData = utils.read_file_content(jobDataFile)
239-
responseLaunchJob.set_data(method='POST', body=jobData)
240+
responseLaunchJob.set_data(method='POST', body=JOB_DATA)
240241
# The query contains decimals: force default response
241242
connHandler.set_default_response(responseLaunchJob)
242243
sc = SkyCoord(ra=29.0, dec=15.0, unit=(u.degree, u.degree),
@@ -379,9 +380,7 @@ def test_query_region_async(self):
379380
connHandler.set_response(req, responsePhase)
380381
# Results response
381382
responseResultsJob = DummyResponse(200)
382-
jobDataFile = data_path('job_1.vot')
383-
jobData = utils.read_file_content(jobDataFile)
384-
responseResultsJob.set_data(method='GET', body=jobData)
383+
responseResultsJob.set_data(method='GET', body=JOB_DATA)
385384
req = "async/" + jobid + "/results/result"
386385
connHandler.set_response(req, responseResultsJob)
387386
sc = SkyCoord(ra=29.0, dec=15.0, unit=(u.degree, u.degree),
@@ -442,9 +441,7 @@ def test_cone_search_sync(self):
442441
# Launch response: we use default response because the
443442
# query contains decimals
444443
responseLaunchJob = DummyResponse(200)
445-
jobDataFile = data_path('job_1.vot')
446-
jobData = utils.read_file_content(jobDataFile)
447-
responseLaunchJob.set_data(method='POST', body=jobData)
444+
responseLaunchJob.set_data(method='POST', body=JOB_DATA)
448445
ra = 19.0
449446
dec = 20.0
450447
sc = SkyCoord(ra=ra, dec=dec, unit=(u.degree, u.degree), frame='icrs')
@@ -544,9 +541,7 @@ def test_cone_search_async(self):
544541
connHandler.set_response(req, responsePhase)
545542
# Results response
546543
responseResultsJob = DummyResponse(200)
547-
jobDataFile = data_path('job_1.vot')
548-
jobData = utils.read_file_content(jobDataFile)
549-
responseResultsJob.set_data(method='GET', body=jobData)
544+
responseResultsJob.set_data(method='GET', body=JOB_DATA)
550545
req = "async/" + jobid + "/results/result"
551546
connHandler.set_response(req, responseResultsJob)
552547
job = tap.cone_search(sc, radius, async_job=True)

astroquery/gaia/tests/DummyTapHandler.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@
1414
1515
1616
"""
17-
from urllib.parse import urlencode
18-
1917
CONTENT_TYPE_POST_DEFAULT = "application/x-www-form-urlencoded"
2018

2119

@@ -320,6 +318,3 @@ def is_valid_user(self, user_id=None, verbose=False):
320318
self.__invokedMethod = 'is_valid_user'
321319
self.__parameters['user_id'] = user_id
322320
self.__parameters['verbose'] = verbose
323-
324-
def url_encode(self, data):
325-
return urlencode(data)

astroquery/gaia/tests/test_gaiatap.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,10 @@
3030
import astropy.units as u
3131
from astropy.coordinates.sky_coordinate import SkyCoord
3232
import numpy as np
33-
from astroquery.utils.tap.xmlparser import utils
3433
from astroquery.utils.tap.core import TapPlus
3534

3635

37-
job_data = utils.read_file_content(Path(__file__).parent.joinpath("data", "job_1.vot"))
36+
job_data = (Path(__file__).with_name("data") / "job_1.vot").read_text()
3837

3938
skycoord = SkyCoord(ra=19 * u.deg, dec=20 * u.deg, frame="icrs")
4039

astroquery/utils/tap/conn/tapconn.py

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@
2424
import mimetypes
2525
import time
2626

27-
from urllib.parse import urlencode
28-
2927
from astroquery.utils.tap.xmlparser import utils
3028
from astroquery.utils.tap import taputils
3129
from astroquery import version
@@ -474,16 +472,6 @@ def get_response_reason(self):
474472
"""
475473
return self.__currentReason
476474

477-
def url_encode(self, data):
478-
"""Encodes the provided dictionary
479-
480-
Parameters
481-
----------
482-
data : dictionary, mandatory
483-
dictionary to be encoded
484-
"""
485-
return urlencode(data)
486-
487475
def find_header(self, headers, key):
488476
"""Searches for the specified keyword
489477

astroquery/utils/tap/conn/tests/DummyConnHandler.py

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616
"""
1717
from astroquery.utils.tap import taputils
1818

19-
from urllib.parse import urlencode
20-
2119
import requests
2220

2321

@@ -29,8 +27,6 @@ def __init__(self):
2927
self.fileExt = ".ext"
3028
self.defaultResponse = None
3129
self.responses = {}
32-
self.errorFileOutput = None
33-
self.errorReceivedResponse = None
3430
self.contentType = None
3531
self.verbose = None
3632
self.query = None
@@ -42,21 +38,6 @@ def set_default_response(self, defaultResponse):
4238
def get_default_response(self):
4339
return self.defaultResponse
4440

45-
def get_last_request(self):
46-
return self.request
47-
48-
def get_last_data(self):
49-
return self.data
50-
51-
def get_last_query(self):
52-
return self.query
53-
54-
def get_error_file_output(self):
55-
return self.errorFileOutput
56-
57-
def get_error_received_response(self):
58-
return self.errorReceivedResponse
59-
6041
def set_response(self, request, response):
6142
self.responses[str(request)] = response
6243

@@ -102,8 +83,6 @@ def __execute_post(self, subcontext=None, data=None,
10283
return self.__get_response(self.request)
10384

10485
def dump_to_file(self, fileOutput, response):
105-
self.errorFileOutput = fileOutput
106-
self.errorReceivedResponse = response
10786
print(f"DummyConnHandler - dump to file: file: '{fileOutput}', \
10887
response status: {response.status}, response msg: {response.reason}")
10988

@@ -147,15 +126,9 @@ def check_launch_response_status(self, response, debug,
147126
else:
148127
return isError
149128

150-
def url_encode(self, data):
151-
return urlencode(data)
152-
153129
def get_suitable_extension(self, headers):
154130
return self.fileExt
155131

156-
def set_suitable_extension(self, ext):
157-
self.fileExt = ext
158-
159132
def get_suitable_extension_by_format(self, output_format):
160133
return self.fileExt
161134

astroquery/utils/tap/core.py

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
Created on 30 jun. 2016
1414
Modified on 1 jun. 2021 by mhsarmiento
1515
"""
16+
from urllib.parse import urlencode
17+
1618
from astroquery.utils.tap import taputils
1719
from astroquery.utils.tap.conn.tapconn import TapConn
1820
from astroquery.utils.tap.xmlparser.tableSaxParser import TableSaxParser
@@ -554,7 +556,7 @@ def list_async_jobs(self, verbose=False):
554556
return jobs
555557

556558
def __appendData(self, args):
557-
data = self.__connHandler.url_encode(args)
559+
data = urlencode(args)
558560
result = ""
559561
firtsTime = True
560562
for k in data:
@@ -633,9 +635,8 @@ def __launchJob(self, query, outputFormat, context, verbose, name=None,
633635
args['PHASE'] = 'RUN'
634636
if name is not None:
635637
args['jobname'] = name
636-
data = self.__connHandler.url_encode(args)
637638
response = self.__connHandler.execute_tappost(subcontext=context,
638-
data=data,
639+
data=urlencode(args),
639640
verbose=verbose)
640641
if verbose:
641642
print(response.status, response.reason)
@@ -847,7 +848,7 @@ def load_data(self, params_dict=None, output_file=None, verbose=False):
847848
connHandler = self.__getconnhandler()
848849
if not isinstance(params_dict, dict):
849850
raise ValueError("Parameters dictionary expected")
850-
data = connHandler.url_encode(params_dict)
851+
data = urlencode(params_dict)
851852
if verbose:
852853
print(f"Data request: {data}")
853854
response = connHandler.execute_datapost(data=data, verbose=verbose)
@@ -1371,8 +1372,7 @@ def __execLogin(self, usr, pwd, verbose=False):
13711372
"username": usr,
13721373
"password": pwd}
13731374
connHandler = self.__getconnhandler()
1374-
data = connHandler.url_encode(args)
1375-
response = connHandler.execute_secure(subContext, data, verbose)
1375+
response = connHandler.execute_secure(subContext, urlencode(args), verbose)
13761376
if verbose:
13771377
print(response.status, response.reason)
13781378
print(response.getheaders())
@@ -1568,8 +1568,7 @@ def delete_user_table(self, table_name=None, force_removal=False,
15681568
"DELETE": "TRUE",
15691569
"FORCE_REMOVAL": "FALSE"}
15701570
connHandler = self.__getconnhandler()
1571-
data = connHandler.url_encode(args)
1572-
response = connHandler.execute_upload(data, verbose=verbose)
1571+
response = connHandler.execute_upload(urlencode(args), verbose=verbose)
15731572
if verbose:
15741573
print(response.status, response.reason)
15751574
print(response.getheaders())
@@ -1620,8 +1619,7 @@ def rename_table(self, table_name=None, new_table_name=None, new_column_names_di
16201619
args = self.get_args_4_rename_table(table_name, table_name, new_column_names_dict)
16211620

16221621
connHandler = self.__getconnhandler()
1623-
data = connHandler.url_encode(args)
1624-
response = connHandler.execute_table_tool(data, verbose=verbose)
1622+
response = connHandler.execute_table_tool(urlencode(args), verbose=verbose)
16251623

16261624
if verbose:
16271625
print(response.status, response.reason)
@@ -1724,8 +1722,7 @@ def update_user_table(self, table_name=None, list_of_changes=[],
17241722
list_of_changes)
17251723

17261724
connHandler = self.__getconnhandler()
1727-
data = connHandler.url_encode(args)
1728-
response = connHandler.execute_table_edit(data, verbose=verbose)
1725+
response = connHandler.execute_table_edit(urlencode(args), verbose=verbose)
17291726
if verbose:
17301727
print(response.status, response.reason)
17311728
print(response.getheaders())
@@ -1897,8 +1894,7 @@ def set_ra_dec_columns(self, table_name=None,
18971894
"DEC": str(dec_column_name),
18981895
}
18991896
connHandler = self.__getconnhandler()
1900-
data = connHandler.url_encode(args)
1901-
response = connHandler.execute_table_edit(data, verbose=verbose)
1897+
response = connHandler.execute_table_edit(urlencode(args), verbose=verbose)
19021898
isError = connHandler.check_launch_response_status(response,
19031899
verbose,
19041900
200)
@@ -1995,10 +1991,8 @@ def logout(self, verbose=False):
19951991
flag to display information about the process
19961992
"""
19971993
subContext = "logout"
1998-
args = {}
19991994
connHandler = self.__getconnhandler()
2000-
data = connHandler.url_encode(args)
2001-
response = connHandler.execute_secure(subContext, data)
1995+
response = connHandler.execute_secure(subContext, "")
20021996
if verbose:
20031997
print(response.status, response.reason)
20041998
print(response.getheaders())

astroquery/utils/tap/model/job.py

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
"""
1717

1818
import time
19+
from urllib.parse import urlencode
1920

2021
from astroquery.utils.tap.model import modelutils
2122
from astroquery.utils.tap.xmlparser import utils
@@ -110,12 +111,9 @@ def abort(self, verbose=False):
110111
def __change_phase(self, phase, verbose=False):
111112
if self._phase == 'PENDING':
112113
context = f"async/{self.jobid}/phase"
113-
args = {
114-
"PHASE": str(phase)}
115-
data = self.connHandler.url_encode(args)
116-
response = self.connHandler.execute_tappost(subcontext=context,
117-
data=data,
118-
verbose=verbose)
114+
response = self.connHandler.execute_tappost(
115+
subcontext=context, data=urlencode({"PHASE": phase}), verbose=verbose
116+
)
119117
if verbose:
120118
print(response.status, response.reason)
121119
print(response.getheaders())
@@ -150,11 +148,8 @@ def send_parameter(self, name=None, value=None, verbose=False):
150148
if self._phase == 'PENDING':
151149
# send post parameter/value
152150
context = f"async/{self.jobid}"
153-
args = {
154-
name: str(value)}
155-
data = self.connHandler.url_encode(args)
156151
response = self.connHandler.execute_tappost(subcontext=context,
157-
data=data,
152+
data=urlencode({name: value}),
158153
verbose=verbose)
159154
if verbose:
160155
print(response.status, response.reason)

astroquery/utils/tap/model/tests/test_job.py

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,13 @@
1414
1515
1616
"""
17-
import os
17+
from pathlib import Path
18+
1819
import pytest
1920

2021
from astroquery.utils.tap.model.job import Job
2122
from astroquery.utils.tap.conn.tests.DummyConnHandler import DummyConnHandler
2223
from astroquery.utils.tap.conn.tests.DummyResponse import DummyResponse
23-
from astroquery.utils.tap.xmlparser import utils
24-
25-
26-
def data_path(filename):
27-
data_dir = os.path.join(os.path.dirname(__file__), 'data')
28-
return os.path.join(data_dir, filename)
2924

3025

3126
def test_job_basic():
@@ -53,9 +48,9 @@ def test_job_get_results(capsys, tmpdir):
5348

5449
responseCheckPhase.set_status_code(200)
5550
responseGetData = DummyResponse(500)
56-
jobContentFileName = data_path('result_1.vot')
57-
jobContent = utils.read_file_content(jobContentFileName)
58-
responseGetData.set_data(method='GET', body=jobContent)
51+
responseGetData.set_data(
52+
method="GET",
53+
body=(Path(__file__).with_name("data") / "result_1.vot").read_text())
5954
dataRequest = f"async/{jobid}/results/result"
6055
connHandler.set_response(dataRequest, responseGetData)
6156

0 commit comments

Comments
 (0)