资源相关接口封装

资源抽象类

class anylearn.interfaces.resource.resource.Resource(id: Optional[str] = None, name: Optional[str] = None, description: Optional[str] = None, state: Optional[int] = None, public=False, upload_time: Optional[Union[datetime.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, owner: Optional[list] = None, load_detail=False)[源代码]

基类:anylearn.interfaces.base.BaseObject

id

资源的唯一标识符,自动生成,由类名前四位+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

owner

资源的所有者,以逗号分隔的这些用户的ID拼成的字符串,无多余空格

load_detail

初始化时是否加载详情

__init__(id: Optional[str] = None, name: Optional[str] = None, description: Optional[str] = None, state: Optional[int] = None, public=False, upload_time: Optional[Union[datetime.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, owner: Optional[list] = None, load_detail=False)[源代码]
参数
  • id – 资源的唯一标识符,自动生成,由类名前四位+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

  • owner – 资源的所有者,以逗号分隔的这些用户的ID拼成的字符串,无多余空格

  • load_detail – 初始化时是否加载详情

_check_fields(required=[])

对象检查属性是否存在

_create()

创建对象,如果子类创建方法与此有较大差异可以重写此方法

abstract _namespace()
  • 子类的命名空间,调用此方法以获取子类的名称用于异常信息输出等,以 User 为例, _namespace 可以为 user

  • 子类需实现此抽象方法

_update()

更新对象,如果子类更新方法与此有较大差异可以重写此方法

_url_create()

创建对象url,如果子类创建对象接口名称不是 add ,可以重写此方法来定制接口名称

_url_delete()

删除对象url,如果子类删除对象接口名称不是 delete ,可以重写此方法来定制接口名称

_url_update()

更新对象url,如果子类更新对象接口名称不是 update ,可以重写此方法来定制接口名称

delete(force: bool = False)

删除对象

  • 对象属性 id 应为非空

返回

True or False

返回类型

bool

classmethod download_file(resource_id: str, save_path: str, polling: Union[float, int] = 5, downloader: Optional[anylearn.interfaces.resource.resource_downloader.ResourceDownloader] = None)[源代码]

把服务器资源使用aiohttp异步下载到本地指定的文件夹

参数
  • resource_id (str) – 资源ID。

  • save_path (str) – 保存路径。

  • downloader (ResourceDownloader) – 可以使用SDK中的AsyncResourceDownloader,也可以自定义实现ResourceDownloader。

  • polling (float, int) – 下载前要先压缩文件,轮询查看文件有没有压缩完的时间间隔,单位:秒。默认值5

返回

文件名。

返回类型

str

abstract get_detail()

获取对象详情,子类需实现此抽象方法

abstract classmethod get_list() → list

获取对象列表,子类需实现此抽象方法

classmethod list_dir(resource_id)[源代码]

文件列表查询接口

参数

resource_idstr 文件ID

返回

{
  "vgg_ssd300_tianyuan.yaml": {
        "name": "vgg_ssd300_tianyuan.yaml",
        "type": "file"
    }
}

save()

创建或更新对象

  • 对象包含非空属性 id 时为更新,否则为创建

  • 创建对象时必须包含且不能为空的字段: _fields['required']['create']

  • 创建对象时包含的所有字段: _fields['payload']['create']

  • 更新对象时必须包含且不能为空的字段: _fields['required']['update']

  • 更新对象时包含的所有字段: _fields['payload']['update']

返回

True or False

返回类型

bool

classmethod upload_file(resource_id: str, file_path: str, uploader: Optional[anylearn.interfaces.resource.resource_uploader.ResourceUploader] = None, chunk_size: int = 2048000)[源代码]

对指定路径的本地文件进行分割并使用aiohttp异步上传

参数
  • resource_id (str) – 资源ID。

  • file_path (str) – 文件路径。

  • uploader (ResourceUploader) – 可以使用SDK中的AsyncResourceUploader,也可以自定义实现ResourceUploader。

  • chunk_size (int) – 文件分割大小,默认2048000。

返回

True or False

返回类型

bool

class anylearn.interfaces.resource.resource.ResourceState[源代码]

基类:object

资源状态标识:

  • 1(CREATED)表示已创建

  • 2(UPLOADING)表示上传中

  • 3(READY)表示就绪

  • -1(DELETED)表示已删除

  • -2(ERROR)表示出错

资源上传类

class anylearn.interfaces.resource.resource_uploader.AsyncResourceUploader(on_start=None, on_progress=None)[源代码]

基类:anylearn.interfaces.resource.resource_uploader.ResourceUploader

资源异步上传工具类

run(resource_id: str, chunks: list)[源代码]

执行资源上传

class anylearn.interfaces.resource.resource_uploader.ResourceUploader[源代码]

基类:abc.ABC

资源上传工具接口

abstract run(resource_id: str, chunks: list)[源代码]

执行资源上传,自定义资源上传需实现此方法

参数
  • resource_id – 资源ID

  • chunks – 被切割后的文件内容列表

class anylearn.interfaces.resource.resource_uploader.SyncResourceUploader[源代码]

基类:anylearn.interfaces.resource.resource_uploader.ResourceUploader

run(resource_id: str, chunks: list)[源代码]

执行资源上传,自定义资源上传需实现此方法

参数
  • resource_id – 资源ID

  • chunks – 被切割后的文件内容列表

资源下载类

class anylearn.interfaces.resource.resource_downloader.AsyncResourceDownloader[源代码]

基类:anylearn.interfaces.resource.resource_downloader.ResourceDownloader

资源异步下载工具类

run(resource_id: str, save_path: str, polling: Union[float, int])[源代码]

执行资源下载,自定义资源上传需实现此方法

参数
  • resource_id – 资源ID

  • save_path – 保存路径

class anylearn.interfaces.resource.resource_downloader.ResourceDownloader[源代码]

基类:abc.ABC

资源下载接口

abstract run(resource_id: str, polling: Union[float, int], save_path: Optional[str] = None)[源代码]

执行资源下载,自定义资源上传需实现此方法

参数
  • resource_id – 资源ID

  • save_path – 保存路径

class anylearn.interfaces.resource.resource_downloader.SyncResourceDownloader[源代码]

基类:anylearn.interfaces.resource.resource_downloader.ResourceDownloader

资源同步下载工具类

run(resource_id: str, save_path: str, polling: Union[float, int] = 5)[源代码]

执行资源下载,自定义资源上传需实现此方法

参数
  • resource_id – 资源ID

  • save_path – 保存路径