anylearn.interfaces.resource.model 源代码

from datetime import datetime
from typing import Optional, Union

from anylearn.utils.api import url_base, get_with_token
from anylearn.utils.errors import AnyLearnException
from anylearn.interfaces.resource.resource import Resource


[文档]class Model(Resource): """ AnyLearn模型类,以方法映射模型CRUD相关接口 Attributes ---------- id 模型的唯一标识符,自动生成,由MODE+uuid1生成的编码中后28个有效位(小写字母和数字)组成(自动生成) name 模型的名称(长度1~50) description 模型描述(长度最大255) state 模型状态 public 模型是否公开(默认为False) upload_time 模型上传时间 filename 下一步中会被分片上传的模型的完整模型名(包括扩展名) is_zipfile 是否为zip文件 file_path 模型文件路径 size 模型文件大小 creator_id 创建者ID node_id 节点ID algorithm_id 模型使用的算法 load_detail 初始化时是否加载详情 """ """具体资源信息配置""" _fields = { # 资源创建/更新请求包体中必须包含且不能为空的字段 'required': { 'create': ['name', 'filename', 'algorithm_id'], 'update': ['id', 'name'], }, # 资源创建/更新请求包体中包含的所有字段 'payload': { 'create': ['name', 'description', 'public', 'filename', 'algorithm_id'], 'update': ['id', 'name', 'description', 'public', 'algorithm_id'], }, } """ 创建/更新对象时: - 必须包含且不能为空的字段 :obj:`_fields['required']` - 所有字段 :obj:`_fields['payload']` """
[文档] def __init__(self, id: Optional[str]=None, name: Optional[str]=None, description: Optional[str]=None, state: Optional[int]=None, public=False, upload_time: Optional[Union[datetime, str]]=None, filename: Optional[str]=None, is_zipfile: Optional[int]=None, file_path: Optional[str]=None, size: Optional[str]=None, creator_id: Optional[str]=None, node_id: Optional[str]=None, algorithm_id: Optional[str]=None, load_detail=False): """ Parameters ---------- id 模型的唯一标识符,自动生成,由MODE+uuid1生成的编码中后28个有效位(小写字母和数字)组成(自动生成) name 模型的名称(长度1~50) description 模型描述(长度最大255) state 模型状态 public 模型是否公开(默认为False) upload_time 模型上传时间 filename 下一步中会被分片上传的模型的完整模型名(包括扩展名) is_zipfile 是否为zip文件 file_path 模型文件路径 size 模型文件大小 creator_id 创建者ID node_id 节点ID algorithm_id 模型使用的算法 load_detail 初始化时是否加载详情 """ self.algorithm_id = algorithm_id super().__init__(id=id, name=name, description=description, state=state, public=public, upload_time=upload_time, filename=filename, is_zipfile=is_zipfile, file_path=file_path, size=size, creator_id=creator_id, node_id=node_id, load_detail=load_detail)
[文档] @classmethod def get_list(cls) -> list: """ 获取模型列表 Returns ------- List [Model] 模型对象的集合。 """ res = get_with_token(f"{url_base()}/model/list") if res is None or not isinstance(res, list): raise AnyLearnException("请求未能得到有效响应") return [ Model(id=m['id'], name=m['name'], description=m['description'], state=m['state'], public=m['public'], upload_time=m['upload_time'], creator_id=m['creator_id'], node_id=m['node_id'], algorithm_id=m['algorithm_id']) for m in res ]
[文档] def get_detail(self): """ 获取模型详细信息 - 对象属性 :obj:`id` 应为非空 Returns ------- Model 模型对象。 """ self._check_fields(required=['id']) res = get_with_token(f"{url_base()}/model/query", params={'id': self.id}) if not res or not isinstance(res, list): raise AnyLearnException("请求未能得到有效响应") res = res[0] self.__init__(id=res['id'], name=res['name'], description=res['description'], state=res['state'], public=res['public'], upload_time=res['upload_time'], filename=res['filename'], is_zipfile=True if res['is_zipfile'] == 1 else False, file_path=res['file'], size=res['size'], creator_id=res['creator_id'], node_id=res['node_id'], algorithm_id=res['algorithm_id'])
[文档] def _namespace(self): return "model"