元数据
这是元数据字典各键值的类型要求
具体说明请看 参数会影响什么 一节
数据类型要求
from typing import TypedDict, Literal
import hpyculator as hpyc
class MetadataDict(TypedDict, total=False):
"""插件元数据数据类型"""
input_mode: Literal[hpyc.STRING, hpyc.NUM, hpyc.FLOAT]
id: str
option: str
version: str
tag: list | str
save_name: str
quantifier: str
output_start: str
output_name: str
author: str | list
help: str
output_end: str
return_mode: Literal[
hpyc.RETURN_ONCE,
hpyc.RETURN_ITERABLE,
hpyc.NO_RETURN,
hpyc.NO_RETURN_SINGLE_FUNCTION,
]
fullwidth_symbol: Literal[hpyc.ON, hpyc.OFF]
以下是一段示例元数据
import hpyculator as hpyc
NAME = "名"
AUTHOR = "作者" or ["作者1", "作者2"]
VERSION = "V1.0.0"
PLUGIN_METADATA = {
'input_mode': hpyc.STRING, # 输入模式,STRING为传入字符串,NUM为传入int,FLOAT为传入float(传入的作为main函数的开始计算值)
'id': "prime_hz", # 插件标识符,需要和文件名一致
'option': f"{NAME}{VERSION} by {', '.join(AUTHOR) if isinstance(AUTHOR,list) else AUTHOR}", # 选项名-在选择算法列表中(必须)
'version': VERSION, # 版本号
'tag' : [""],
'save_name': "", # 文件保存名
'quantifier': "", # 文件保存量词
'output_start': "", # 输出头
'output_name': NAME, # 选择此项后输出的名字
'author': AUTHOR, # 作者
'help': """\
输入格式
n
输入样例
1
""", # 帮助和说明
'output_end': "", # 输出小尾巴
'return_mode': hpyc.NO_RETURN_SINGLE_FUNCTION,
"fullwidth_symbol": hpyc.OFF # 懒人专用,默认是0,开1之后help段符号全部转换成全角(可选)
}
数据类型要求和说明
import hpyculator as hpyc
- 输入数据类型
input_mode, 会将原始输入转换成对应类型, 要求在以下常量中选择一个
hpyc.STRING -> 对应 str 类型
hpyc.NUM -> 对应 int 类型
hpyc.FLOAT -> 对应 float 类型
- 插件
id
str 类型, 要求于文件名(单文件插件)/文件夹名(文件夹插件)一致, 否则无法正常加载插件
- 选项名 option
str 类型, 给用户展示选项所用
- 版本号 version
str 类型, 建议使用语义化版本
- 标签
tag支持的形式
列表,如:[“标签1”,”标签2”] [“标签1”]
字符串,如:”标签”
- 保存所用名称
save_name
str 类型
- 量词, 保存用
quantifier
str 类型
- 输出头
output_start
str 类型, 一般与 ``help `` 同时输出
- 输出名
output_name
str 类型, 一般与 ``help `` 同时输出
- 作者名
author支持的形式
字符串类型,如:”作者名”
列表,如:[“作者名1”, “作者名2”]
- 详细介绍, 帮助, 介绍正文
help
str 类型
- 输出尾
output_end
str 类型, 一般与 ``help `` 同时输出
- 返回模式
return_mode要求在以下常量中选择一个
hpyc.RETURN_ONCE
hpyc.RETURN_ITERABLE
hpyc.NO_RETURN
hpyc.NO_RETURN_SINGLE_FUNCTION
- 全角模式
fullwidth_symbol
会将
help字段值中的半角符号转换为全角符号
参数会影响什么
以下内容是描述hpyc_pyside_ui的解析系统
内置文本框框在选择后的输出
""" output_start output_name version by author 使用提示: help output_end """
- 保存文件名
时间 + save_name + 输入 + quantifier .txt
- 添加的选项
option
- 会被特殊识别的标签
category:开头的标签,会被作为插件类别识别,如”category:math”
computer_language:开头的标签,会作为所用编程语言识别,如”computer_language:java”
depend:开头的标签,会作为依赖识别,如”depend:numpy”
return_mode 参数讲解
import hpyculator as hpyc
hpyc.RETURN_ONCE : on_calculate函数返回的结果会经过一次str转换之后输出
hpyc.RETURN_ITERABLE : on_calculate函数返回的结果会经过迭代,每一项都会经过str转换之后输出
hpyc_pyside_ui对hpyc.RETURN_ITERABLE的处理方式
#return的值是[1,2,3,4] #输出和保存则是 """ 1 2 3 4 """
为了提供更高的自由度, hpyc.NO_RETURN 和 hpyc.NO_RETURN_SINGLE_FUNCTION 孕育而生
hpyc.NO_RETURN 和 hpyc.NO_RETURN_SINGLE_FUNCTION 给与了插件作者调整输出时机和保存时机
hpyc.NO_RETURN 中,核心(hpyc_core)仅仅是把参数传给 on_calculate 函数和 on_calculate_with_save 函数 ,然后需要使用 output, write, flush等函数自己调节输出到文本框,写入内存,写入硬盘的时机
hpyc.NO_RETURN 分成两个函数不够高效,于是出现了 hpyc.NO_RETURN_SINGLE_FUNCTION ,会多传入一个参数(请看插件事件一节),来告知插件究竟是保存还是输出,来决定是使用 output还是 write函数