From f658c8d074a81cc93bca5abf30658de8acd69880 Mon Sep 17 00:00:00 2001 From: MARCHAND MANON Date: Fri, 10 Nov 2023 16:14:59 +0100 Subject: [PATCH] fix: switch simbad.mirror-list back into configuration --- astroquery/simbad/__init__.py | 5 ++++- astroquery/simbad/core.py | 29 ++++++++++++-------------- astroquery/simbad/tests/test_simbad.py | 12 +++++------ 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/astroquery/simbad/__init__.py b/astroquery/simbad/__init__.py index d664994c99..12618e3a9f 100644 --- a/astroquery/simbad/__init__.py +++ b/astroquery/simbad/__init__.py @@ -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( diff --git a/astroquery/simbad/core.py b/astroquery/simbad/core.py index 74deec60c0..661d6c54fc 100644 --- a/astroquery/simbad/core.py +++ b/astroquery/simbad/core.py @@ -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): + @server.setter + def server(self, server: str): f"""Allows to switch server between Simbad mirrors. Parameters ---------- server : str - It should be one of {self.simbad_mirrors}. + It should be one of {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 diff --git a/astroquery/simbad/tests/test_simbad.py b/astroquery/simbad/tests/test_simbad.py index 6d2729d883..6ee28ebf11 100644 --- a/astroquery/simbad/tests/test_simbad.py +++ b/astroquery/simbad/tests/test_simbad.py @@ -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():