Source code for manna.backends.cone
import logging
import pyvo
from astropy.table import Table
from pyvo.dal.exceptions import DALAccessError, DALQueryError
from manna.errors import ArchiveError, DalQueryError
log = logging.getLogger(__name__)
[docs]
class ConeSearchClient:
"""Sync wrapper over pyvo.dal.SCSService.search()."""
[docs]
def search(
self,
*,
endpoint: str,
ra: float,
dec: float,
radius_deg: float,
maxrec: int = 10_000,
) -> Table:
try:
svc = pyvo.dal.SCSService(endpoint)
result = svc.search(pos=(ra, dec), radius=radius_deg, maxrec=maxrec)
except DALQueryError as e:
raise DalQueryError(message=str(e)) from e
except DALAccessError as e:
raise ArchiveError(message=str(e)) from e
table = result.to_table()
# Defensive cap — pyvo respects maxrec server-side, but verify locally.
if len(table) > maxrec:
table = table[:maxrec]
return table