Skip to content

Commit

Permalink
fix: switch simbad.mirror list into simbad.conf.server_list
Browse files Browse the repository at this point in the history
  • Loading branch information
ManonMarchand committed Nov 13, 2023
1 parent ff9e54b commit 01256a3
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 24 deletions.
5 changes: 4 additions & 1 deletion astroquery/simbad/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,11 @@ class Conf(_config.ConfigNamespace):
"""
Configuration parameters for `astroquery.simbad`.
"""
# the first item is the default configuration
servers_list = ['simbad.cds.unistra.fr', 'simbad.harvard.edu']

server = _config.ConfigItem(
['simbad.cds.unistra.fr', 'simbad.harvard.edu'],
servers_list,
'Name of the SIMBAD mirror to use.')

timeout = _config.ConfigItem(
Expand Down
31 changes: 14 additions & 17 deletions astroquery/simbad/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -336,38 +336,35 @@ class SimbadClass(BaseVOQuery, SimbadBaseQuery):
def __init__(self):
super().__init__()
self._VOTABLE_FIELDS = self._VOTABLE_FIELDS.copy()
self._mirror = conf.server
self._server = conf.server
self._tap = None

@property
def simbad_mirrors(self):
"""Set of the two Simbad mirrors domains."""
return {'simbad.cds.unistra.fr', 'simbad.harvard.edu'}

@property
def mirror(self):
def server(self):
"""The Simbad mirror to use."""
return self._mirror
return self._server

@mirror.setter
def mirror(self, server: str):
f"""Allows to switch server between Simbad mirrors.
@server.setter
def server(self, server: str):
"""Allows to switch server between Simbad mirrors.
Parameters
----------
server : str
It should be one of {self.simbad_mirrors}.
It should be one of `~astroquery.simbad.conf.servers_list`.
"""
if server in self.simbad_mirrors:
self._mirror = server
if server in conf.servers_list:
self._server = server
else:
raise ValueError(f"'{server}' does not correspond to a Simbad mirror, "
f"the two existing ones are {self.simbad_mirrors}.")
raise ValueError(f"'{server}' does not correspond to a Simbad server, "
f"the two existing ones are {conf.servers_list}.")

@property
def tap(self):
"""A ``~pyvo.dal.tap.TAPService`` service for Simbad."""
tap_url = "https://" + self.mirror + "/simbad/sim-tap"
tap_url = f"https://{self.server}/simbad/sim-tap"
# only creates a new tap instance if there are no existing one
# or if the server property changed since the last getter call.
if (not self._tap) or (self._tap.baseurl != tap_url):
self._tap = TAPService(baseurl=tap_url, session=self._session)
return self._tap
Expand Down
12 changes: 6 additions & 6 deletions astroquery/simbad/tests/test_simbad.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,14 +77,14 @@ class last_query:
def test_simbad_mirror():
simbad_instance = simbad.SimbadClass()
# default value should be set at instantiation
assert simbad_instance.mirror == "simbad.cds.unistra.fr"
assert simbad_instance.server == "simbad.cds.unistra.fr"
# it can be switched to harvard mirror
simbad_instance.mirror = "simbad.harvard.edu"
assert simbad_instance.mirror == "simbad.harvard.edu"
simbad_instance.server = "simbad.harvard.edu"
assert simbad_instance.server == "simbad.harvard.edu"
# but not to an invalid mirror
with pytest.raises(ValueError,
match="'test' does not correspond to a Simbad mirror, *"):
# but not to an invalid mirror
simbad_instance.mirror = "test"
match="'test' does not correspond to a Simbad server, *"):
simbad_instance.server = "test"


def test_simbad_create_tap_service():
Expand Down

0 comments on commit 01256a3

Please sign in to comment.