Loading csst_dfs_client/common/__init__.py +1 −1 Original line number Diff line number Diff line Loading @@ -59,7 +59,7 @@ class Result(dict): self["code"] = resp.status_code if self.success: content_dict = json.loads(resp.content.decode('utf-8')) if 'total_count' in content_dict and 'records' in content_dict: if isinstance(content_dict, dict) and 'total_count' in content_dict and 'records' in content_dict: self["data"] = content_dict['records'] self["total_count"] = content_dict['total_count'] else: Loading csst_dfs_client/level1.py +11 −1 Original line number Diff line number Diff line from typing import Optional, IO, Tuple, Literal from typing import Optional, Tuple, Literal from .common import request, Result import os Loading Loading @@ -99,6 +99,16 @@ def find_by_level1_id(level1_id: str) -> Result: return request.get(f"/api/level1/{level1_id}") def find_by_brick_id(brick_id: int) -> Result: """ 通过 brick 的 ID 查询1级数据。 Args: brick_id (int): 天区ID。 Returns: Result: 查询结果。 """ return request.get(f"/api/level1/brick/{brick_id}") def sls_find_by_qc1_status(qc1_status: int, limit: int = 1) -> Result: Loading csst_dfs_client/level2.py +1 −1 Original line number Diff line number Diff line import os from typing import Optional, IO, Tuple, Literal from typing import Optional, Tuple, Literal from .common import request, Result DateTimeTuple = Tuple[str, str] Loading csst_dfs_client/plan.py 0 → 100644 +94 −0 Original line number Diff line number Diff line import os from typing import Optional, IO, Tuple, Literal from .common import request, Result DateTimeTuple = Tuple[str, str] def find(mode: Optional[str] = None, obsid: Optional[str] = None, backend: Literal['MSC', 'IFS', 'MCI', 'HSTDM', 'CPIC'] = 'MSC', obstype: Optional[str] = None, obstime: Optional[DateTimeTuple] = None, page: int = 1, limit: int = 0) -> Result: """ 根据给定的参数在DFS中搜索编排数据。 Args: mode (Optional[str], optional): 观测模式. Defaults to None. obsid (Optional[str], optional): 观测ID,支持模糊搜索. Defaults to None. backend (Optional[str], optional): 模块ID,如'MSC', 'IFS'. Defaults to None. obstype (Optional[str], optional): 观测类型,如'SCIE'. Defaults to None. obstime (Optional[DateTimeTuple], optional): 观测时间范围. Defaults to None. page (int, optional): 页码. Defaults to 1. limit (int, optional): 每页数量. Defaults to 0,不限制. Returns: Result: 搜索结果对象. """ params = { 'mode': mode, 'obsid': obsid, 'backend': backend, 'obstype': obstype, 'obs_time_start': None, 'obs_time_end': None, 'create_time_start': None, 'create_time_end': None, 'page': page, 'limit': limit, } if obstime is not None: params['obs_time_start'], params['obs_time_end'] = obstime return request.post("/api/plan", params) def get_by_id(_id: str) -> Result: return request.get(f"/api/plan/_id/{_id}") def find_by_opid(opid: str) -> Result: """ 通过 plan 的 opid 查询编排数据。 Args: opid (str): opid。 Returns: Result: 查询结果。 """ return request.get(f"/api/plan/{opid}") def write_file(local_file: Optional[IO | str], **kwargs) -> Result: """ 将本地json文件或json数据流写入DFS中。 Args: local_file (str]): 文件路径。 **kwargs: 额外的关键字参数,这些参数将传递给DFS。 Returns: Result: 操作的结果对象,包含操作是否成功以及相关的错误信息,成功返回数据对象。 """ if isinstance(local_file, str): if not os.path.exists(local_file): raise FileNotFoundError(local_file) return request.post_file("/api/plan/file", local_file, kwargs) return request.post_bytesio("/api/plan/file", local_file, kwargs) def new(data: dict) -> Result: """ 新建编排数据 Args: data (dict): 编排数据的字典表示,如:{'opid': 'xxx', 'backend': 'MSC', ...} Returns: Result: 成功后,Result.data为写入记录,失败message为失败原因。 """ return request.post("/api/plan/new", data) No newline at end of file requirements-test.txt +1 −0 Original line number Diff line number Diff line requests==2.31.0 bumpver==2023.1129 boto3==1.35.24 # for testing pytest==7.4.3 coverage==7.6.1 Loading Loading
csst_dfs_client/common/__init__.py +1 −1 Original line number Diff line number Diff line Loading @@ -59,7 +59,7 @@ class Result(dict): self["code"] = resp.status_code if self.success: content_dict = json.loads(resp.content.decode('utf-8')) if 'total_count' in content_dict and 'records' in content_dict: if isinstance(content_dict, dict) and 'total_count' in content_dict and 'records' in content_dict: self["data"] = content_dict['records'] self["total_count"] = content_dict['total_count'] else: Loading
csst_dfs_client/level1.py +11 −1 Original line number Diff line number Diff line from typing import Optional, IO, Tuple, Literal from typing import Optional, Tuple, Literal from .common import request, Result import os Loading Loading @@ -99,6 +99,16 @@ def find_by_level1_id(level1_id: str) -> Result: return request.get(f"/api/level1/{level1_id}") def find_by_brick_id(brick_id: int) -> Result: """ 通过 brick 的 ID 查询1级数据。 Args: brick_id (int): 天区ID。 Returns: Result: 查询结果。 """ return request.get(f"/api/level1/brick/{brick_id}") def sls_find_by_qc1_status(qc1_status: int, limit: int = 1) -> Result: Loading
csst_dfs_client/level2.py +1 −1 Original line number Diff line number Diff line import os from typing import Optional, IO, Tuple, Literal from typing import Optional, Tuple, Literal from .common import request, Result DateTimeTuple = Tuple[str, str] Loading
csst_dfs_client/plan.py 0 → 100644 +94 −0 Original line number Diff line number Diff line import os from typing import Optional, IO, Tuple, Literal from .common import request, Result DateTimeTuple = Tuple[str, str] def find(mode: Optional[str] = None, obsid: Optional[str] = None, backend: Literal['MSC', 'IFS', 'MCI', 'HSTDM', 'CPIC'] = 'MSC', obstype: Optional[str] = None, obstime: Optional[DateTimeTuple] = None, page: int = 1, limit: int = 0) -> Result: """ 根据给定的参数在DFS中搜索编排数据。 Args: mode (Optional[str], optional): 观测模式. Defaults to None. obsid (Optional[str], optional): 观测ID,支持模糊搜索. Defaults to None. backend (Optional[str], optional): 模块ID,如'MSC', 'IFS'. Defaults to None. obstype (Optional[str], optional): 观测类型,如'SCIE'. Defaults to None. obstime (Optional[DateTimeTuple], optional): 观测时间范围. Defaults to None. page (int, optional): 页码. Defaults to 1. limit (int, optional): 每页数量. Defaults to 0,不限制. Returns: Result: 搜索结果对象. """ params = { 'mode': mode, 'obsid': obsid, 'backend': backend, 'obstype': obstype, 'obs_time_start': None, 'obs_time_end': None, 'create_time_start': None, 'create_time_end': None, 'page': page, 'limit': limit, } if obstime is not None: params['obs_time_start'], params['obs_time_end'] = obstime return request.post("/api/plan", params) def get_by_id(_id: str) -> Result: return request.get(f"/api/plan/_id/{_id}") def find_by_opid(opid: str) -> Result: """ 通过 plan 的 opid 查询编排数据。 Args: opid (str): opid。 Returns: Result: 查询结果。 """ return request.get(f"/api/plan/{opid}") def write_file(local_file: Optional[IO | str], **kwargs) -> Result: """ 将本地json文件或json数据流写入DFS中。 Args: local_file (str]): 文件路径。 **kwargs: 额外的关键字参数,这些参数将传递给DFS。 Returns: Result: 操作的结果对象,包含操作是否成功以及相关的错误信息,成功返回数据对象。 """ if isinstance(local_file, str): if not os.path.exists(local_file): raise FileNotFoundError(local_file) return request.post_file("/api/plan/file", local_file, kwargs) return request.post_bytesio("/api/plan/file", local_file, kwargs) def new(data: dict) -> Result: """ 新建编排数据 Args: data (dict): 编排数据的字典表示,如:{'opid': 'xxx', 'backend': 'MSC', ...} Returns: Result: 成功后,Result.data为写入记录,失败message为失败原因。 """ return request.post("/api/plan/new", data) No newline at end of file
requirements-test.txt +1 −0 Original line number Diff line number Diff line requests==2.31.0 bumpver==2023.1129 boto3==1.35.24 # for testing pytest==7.4.3 coverage==7.6.1 Loading