Releases: ArcletProject/Alconna
Releases · ArcletProject/Alconna
Alconna 1.5.1
Alconna 1.5.0 ~ 1.5.1:
- 加入
HeadResult, 表示头部匹配的结果 - 加入
SubAnalyser, 负责部分原Analyser的部分功能 Arparma.header_match现在返回HeadResult类型- 新增
DataCollectionContainer类, 负责原Analyser的数据操作 - 因为 [2], 现在支持子命令嵌套
- 部分 api 改动:
Analyser.process->Analyser.container.buildAnalyser.analyser->Analyser.processanalyse_subcommand->analyse_param
- 新增
Analyser.config方法以配置如preprocessor,filter_out之类的参数 Arparma.update移动到ArparmaBehavior.updateArparma.query现在不一定返回Mapping类型- 新增
output_manager.set方法以新增输出行为 - 修改
output_manager.get方法从构建输出行为到只获取输出行为 - 新增
output_manager.capture上下文管理器以提供输出捕获功能 set_default可以细化至更新subcmd.opt.args.arg的值- 修复 bug
Alconna 1.4.1
修复 help text的bug
Alconna 1.4.0
- 改进字符串分割过程,以运行更细粒度的分隔控制
- 加入ArparmaExecutor,以绑定一个响应函数
- behaviors与formatter的配置移至
Namespace, 原Alconna.config仅用于配置解析器类型 Alconna构建时不再允许废弃的kwargs参数传入- 'Arpamar' -> 'Arparma'
- 改进 Args 构建, 加入 Arg 类 替代原先的 ArgUnit,并保留参数名后缀传入
- 可变参数与键值参数需要通过
alconna.typing.MultiVar与alconna.typing.KeyWordVar显式声明,
并提供alconna.typing.Kw来进行缩写 (如Kw @ int) - 修复可能存在的内存泄漏问题
- 原先的 ArgFlag
'H','O','A'变回'/','?','!' - Args.separators 移除,分割任务转移给 Arg.separators
set_default现在可以传入 factory 参数, 并且必须传入关键字参数
Alconna 1.3.1 - 1.3.2
- 添加通过"+"以组合字符串与选项或者子命令等隐式构建命令的方法
- 允许自定义内建选项的名称,比如改"--help"为"帮助"
Arpamar.find现在可以用 query_path 了Arpamar.query现在返回的是MappingProxyType, 若需要修改path的值请用Arpamar.update- 修复 bugs
- 调整lang config
- 修改 help text 的 bug
- 调整 completion 样式
Alconna 1.3.0
- 修复 bugs
- 调整 Alconna的构造样式, 将header、command、options等合并; 兼容旧版写法到1.4
- 原先的builtins迁移至
arclet-alconna-tools, 只保留set_default、store_value与version set_default可以附加一个 arg 名- 调整repr样式
- 取消 shortcut的expiration
- 新增命名空间配置,并将原先部分全局配置划为命名空间下的配置
- 允许.parse传入参数interrupt(bool)以在参数缺失的情况下可后续自行加参数
Alconna 1.2.x
Alconna 1.1.x
Alconna 1.1.2:
- 修复 bugs
- BasePattern 加入
to方法
Alconna 1.1.1:
Arpamar泛型支持, 可通过Arpamar[type]指定原指令的类型Alconna可通过|进行组合, 返回命令组
alc = Alconna("{place1}在哪里") | Alconna("哪里有{place1}")
alc.parse("食物在哪里")
alc.parse("哪里有食物")Alconna 1.1.0:
AlconnaDuplication->DuplicationDuplication现在支持写入参数名或头部名称, 如
command = Alconna("test", Args["foo", int]) + Option("bar", Args["bar", str])
class Demo(Duplication):
foo: int
bar: strArpamar在执行行为器时可以通过抛出OutBoundsBehave使解析失败- 修复bugs
Alconna 1.0.0
日志
- 将
lang迁移到新增的config中,并为config加入了如全局分隔、开启缓存等选项 - 压缩代码量并规范化
--help选项允许在命令任何部位生效, 并且会根据当前命令选择是否展示选项的帮助信息Argsname 的flag附加现在不需要以|分隔Argsname 允许用#...为单个Arg提供注释, 其会展示在帮助信息内Args允许传入Callable[[A], B]作为表达, 会自动解析输入类型与输出类型- 完善了测试代码, 位于测试文件夹内, 通过入口文件可执行全部测试
- 加入一个类似
beartype的checker - 命令头部允许使用非str类型, 即可以
Alconna(int) - 解析器增加预处理器选项, 允许在分划数据单元前进行转化处理
- 性能提升, 理想情况最快约为 20w msg/s
- 删除
Alconna.set_action - 重构
ObjectPattern - 增加
datetime的 BasePattern, 支持传入时间戳或日期文字 Analyser的字段修改,next_data->popitem,reduce_data->pushbackoutput_send合并到output_managerOption添加参数priority, 仅在需要选项重载时安排优先级- 修复bugs
Alconna 0.9.x
Alconna 0.9.0:
- 将 HelpAction 与 HelpTextFormatter 作为 help 模块
- 语言配置组件的增强. 现在以语言种类标识符作为父级, 以支持多语言.
- 为 manager 新增一个记录命令输入的 LruCache. 解析器可以使用这个缓存来避免重复解析. 目前缓存上限为 100.
- 新增
--shortcut内置选项, 为命令提供临时快捷命令的创建与删除. - 修改 manager 中的
shortcut, 并支持持久化 - 部分性能优化, 以大致抵消因缓存计算而带来的性能损耗.
- 部分 api 名称变更:
pattern->pattern_genhandle_message->process_message
- Args 新增
add_argument方法, 以添加参数.
Alconna 0.9.1:
- 增添
dest, 其作为选项在 Arpamar 中的实际名称. - 增加内建
Argument方法, 类似于add_argument, 以便捷创建 Option + Args 的组合. - 修复 bug
Alconna 0.9.2:
- 增强
Arpamar的功能, 使其更类似于一种接口. 其中的修改有: #42
- 从
get()变为query() - 从
has()变为find() - 从
set()变为update() - 从
update()变为execute() - 增加
get_duplication() - 增加
source,origin属性
Alconna 0.9.3:
- 合并
ArgPattern与TypePattern为BasePattern, 并将诸多分散特性(如anti,any) 移动到BasePattern中. #34 - 取消
Analyser中有关arg_handler的部分 AnyStr、AnyDigit、AnyFloat等现在不被公开.AnyParam重写为由BasePattern实现, 并改名为AnyOne.alconna.types变为alconna.typing.- 修复 bug.
Alconna 0.9.4:
- 修改
Args的构造方法, 取消使用 slice 传入参数. 请从Args[foo:int, bar:str:default]修改为Args[foo, int][bar, str, default]. - Option 与 Subcommand 现支持 requires 参数, 该参数允许解析该节点时判断 require 的字段是否存在. #44
- Option 与 Subcommand 的 requires 可以通过 name 传入, 用空格分隔. 该特性要求 Option 中传入别名时不能用空格.
- 允许同名的 Option 与 Subcommand 在同一个命令中, 应保证能用 require 参数来区分.
- 允许简单的选项重载, 如
Option("foo", Args.bar[int])可以与Option("foo")一起使用. - BasePattern 增加
validator属性, 负责对匹配结果进行验证. #47 - Args 支持 Annotated 的传入, 如
Args.bar[Annotated[int, lambda x: x > 0]], 或使用arclet.alconna.typing.Bind - 加入
AlconnaGroup类, 用于组合多个Alconna对象. 其解析行为与Alconna相同. #46 - 取消不能构建多个重名的
Alconna对象, 以AlconnaGroup代替. (暂定) - 删除
arclet.alconna.components.visitor, 修改Formatter的传入参数. - 增加
Alconna.config类方法, 用于设置全局配置. - 移出
arclet.alconna.builtin.commandline, 独立为一个模块alconna-cli. ObjectPattern移动到arclet.alconna.builtin.pattern模块.- 修复 bug.
Alconna 0.8.x
Alconna 0.8.0:
Option的alias现在需要传入List[str],而不是str。help_text内置两个预选板块Usage和Example, 编写规则为"xxx Usage:xxx; Example:xxx;"。- 加入
TypePattern, 作用为简单的类型转换器, 其可以设置前置转换器, 即可以str -> Path -> bytes。 #34 - 加入命令的模糊匹配, 在
Alconna中传入is_fuzzy_match参数, 可以设置是否模糊匹配。 AlconnaString参数规则修改, 现在<xx>表示必选,[xx]表示可选,&xx表示action的值。ArgparseHelpTextFormatter相关格式修改
Alconna 0.8.1-0.8.2:
- 修改了一些docstring
- 修改参数前缀, 现需要以后缀形式传入, 以
';'为开头, 并用'|'分割。 #35 - 参数前缀现通过单个大写字母表示, 具体对应如下:
'S'<='*''W'<='**''O'<='?''K'<='@''H'<='_''F'<='#''A'<='!'
- 参数标识符现增加数字, 以表示指定长度的可变参数, 如
'foo;S'表示能接收任意长度的可变参数,'foo;3'表示接收长度为3的可变参数。 #35 Args现在允许传入分隔符, 通过Args.separate(xx)或Args / xx设置- 加入
pattern装饰器函数, 用以便捷的创建ArgPattern对象 #35 - 加入
delegate装饰器函数, 用以便捷的创建Alconna对象 - 修复bug
Alconna 0.8.3:
- 命令头的正则支持格式修改, 由原来的
f"{表达式}"改为"{名称:类型或表达式}" - 加入语言文件配置, 可以通过
Alconna.load_config_file加载自定义的语言文件, 格式为json - 为选项与子命令的匹配也加入了模糊匹配
- 选项与子命令的
separator可以传入空字符串,Alconna会据此自动分割 #35 - 部分API修改, 暂时去除
from_dict方法 - 修复了一些bug