Commit dbd35982 authored by Wei Shoulin's avatar Wei Shoulin
Browse files

feat(catalog): add limit parameter to search function and implement describe_catalog

- Add optional `limit` parameter to the `search` function in catalog.py
- Implement new `describe_catalog` function to get column information of a catalog
- Update unit tests to include the new parameter and test the new function
- Minor formatting improvements in docstrings and test cases
parent 9a8486ac
from .common import request, Result
import pickle
def search(ra: float,
dec: float,
radius: float,
catalog_name: str,
columns: list[str] = ['*'],
min_mag: float = -1,
max_mag: float = -1,
obstime: int = 0,
def search(ra: float,
dec: float,
radius: float,
catalog_name: str,
columns: list[str] = ['*'],
min_mag: float = -1,
max_mag: float = -1,
obstime: int = 0,
limit: int = 0) -> Result:
"""
根据输入的赤经、赤纬、半径、星表名称、列名、最小星等、最大星等、观测时间和限制数量,
查询指定范围内的天体数据,并返回查询结果。
Args:
ra (float): 天体赤经(以度为单位)。
dec (float): 天体赤纬(以度为单位)。
......@@ -24,13 +24,13 @@ def search(ra: float,
max_mag (float, optional): 最大星等,默认为 -1。表示无限制。
obstime (int, optional): 观测时间,默认为 0,暂无用。
limit (int, optional): 查询结果的数量限制,默认为 0。表示无限制。
Returns:
Result: 查询结果。
Raises:
Exception: 如果请求失败,将抛出异常。
"""
if not columns:
......@@ -60,13 +60,13 @@ def search(ra: float,
def all_catalog_names() -> Result:
"""
获取星表名称列表。
Returns:
Result: 星表列表。
Raises:
Exception: 如果请求失败,将抛出异常。
"""
try:
datas = request.get('/api/catalog/names')
......@@ -76,3 +76,23 @@ def all_catalog_names() -> Result:
return Result.ok_data(data = records)
except Exception as e:
return Result.error(str(e))
def describe_catalog(catalog_name: str) -> Result:
"""
获取星表各列信息。
Returns:
Result: 列描述的列表。
Raises:
Exception: 如果请求失败,将抛出异常。
"""
try:
datas = request.get(f'/api/catalog/describe/{catalog_name}')
if datas and isinstance(datas, Result):
return datas
records = pickle.loads(datas._content)
return Result.ok_data(data = records)
except Exception as e:
return Result.error(str(e))
......@@ -9,14 +9,14 @@ class CatalogTestCase(unittest.TestCase):
def test_search(self):
result = catalog.search(
ra=90,
dec=24.5,
radius=0.21,
ra=90,
dec=24.5,
radius=0.21,
columns = ['ref_epoch','ra','ra_error','dec','dec_error','parallax','parallax_error','pmra','pmra_error','pmdec','pmdec_error','phot_g_mean_mag','source_id'],
catalog_name='gaia3',
min_mag=-1,
max_mag=-1,
obstime = -1,
catalog_name='gaia3',
min_mag=-1,
max_mag=-1,
obstime = -1,
limit = 10
)
print(result)
......@@ -27,4 +27,10 @@ class CatalogTestCase(unittest.TestCase):
result = catalog.all_catalog_names()
print(result)
self.assertEqual(result.code, 200, "error code: " + str(result.code) + ", message: " + result.message)
self.assertIsNotNone(result.data, "error message: " + result.message)
\ No newline at end of file
self.assertIsNotNone(result.data, "error message: " + result.message)
def test_describe_catalog(self):
result = catalog.describe_catalog('gaia3_source')
print(result)
self.assertEqual(result.code, 200, "error code: " + str(result.code) + ", message: " + result.message)
self.assertIsNotNone(result.data, "error message: " + result.message)
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment