# -*- coding:utf-8 -*-
"""
core中继承了所有类的中的所有功能
"""
from .query import QueryDigit
from .info import Information
from .setting import *
from .download import Download
from .data import Data
from .child_base_data import *
[docs]class Core():
def __init__(self):
self.query = QueryDigit()
self.info = Information()
self.download = Download()
self.data = Data()
self.data_id = ''
[docs] def update_api_token(self, new_token: str):
"""
new_token: api-token字符串
该方法来自Information类
"""
self.info.update_api_token(new_token)
[docs] def get_resources(self, api_type: str = 'data', id=None, detail: bool = False):
"""
该函数用于查询digit平台现有资源,返回资源元数据
:param api_type: 使用何种类型的api,api_type 可选{'data','card','user','account','websetting','dataid'}
:param id: 查询特定资源时用用该资源的id进行查看
:param detail: 是否输出可获取的所有元数据字段
:return: queryset 查询结果
"""
self.query.get_resources(api_type="data", id=None, detail=False)
[docs] def get_category(self):
"""
该函数用于查看digit平台分类体系编码与对应的实际含义,['storage_type', 'data_type', 'language', 'task_type', ]
:return:
"""
self.query.get_category()
[docs] def download_repo(self, data_id_or_name: str, update: bool = False):
"""
该函数可以根据data_id或name下载对应的资源至本地
:param data_id_or_name:
:param update: 是否更新缓存
:return:
"""
self.data_id = self.download.download_repo(data_id_or_name, update)
[docs] def load(self, data_id_or_name: str, imp_class="DigitData"):
"""
该函数用于加载下载的脚本代码中的DigitData类
:return:
:param data_id_or_name:
:param imp_class: 导入类的类型名称
:return: imp_class_instance 导入类的实例
"""
data_id = ''
if self.data_id:
data_id = self.data_id
else:
data_id = data_id_or_name
return self.data.load(data_id_or_name=data_id, imp_class=imp_class)
[docs] def run(self):
self.data.run()
[docs] def all_in_one(self, data_id_or_name: str, update: bool = False, imp_class: str = "DigitData"):
# 下载并加载repo, 相当于download_repo()和 load两个函数
self.download_repo(data_id_or_name, update)
self.load(data_id_or_name=self.data_id, imp_class=imp_class)
self.run()
[docs] def get_data_id(self):
"""
获取当前下载仓库的 data_id
:return: data_id:str
"""
print(self.data_id)
return self.data_id
[docs] def upload(self,md_instruction_path,config_path):
# 上传data资源
self.data.upload(md_instruction_path,config_path)
[docs] def delete(self, data_id_or_name):
# 删除自己的data
self.data.delete(data_id_or_name)