Releases: ArcletProject/Alconna
Releases · ArcletProject/Alconna
Alconna 1.6.0
- 改进 shorcut
- 改进 Alconna.add,加入subcommand的添加
- 修复 bugs
- 移动
Args.from_string_list
至arclet-alconna-tools
- 合并
arparma
与components.behavior
- 合并
parts
与special
- 移动
Formatter
至formatter.py
- 移动
ActionHandler
至core.py
- 移除
AlconnGroup
类,但保留通过|
组合命令的行为 - 移除
analysis.base
Full Changelog: 1.5.0...1.6.0
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.build
Analyser.analyser
->Analyser.process
analyse_subcommand
->analyse_param
- 新增
Analyser.config
方法以配置如preprocessor
,filter_out
之类的参数 Arparma.update
移动到ArparmaBehavior.update
Arparma.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
->Duplication
Duplication
现在支持写入参数名或头部名称, 如
command = Alconna("test", Args["foo", int]) + Option("bar", Args["bar", str])
class Demo(Duplication):
foo: int
bar: str
Arpamar
在执行行为器时可以通过抛出OutBoundsBehave
使解析失败- 修复bugs
Alconna 1.0.0
日志
- 将
lang
迁移到新增的config
中,并为config
加入了如全局分隔、开启缓存等选项 - 压缩代码量并规范化
--help
选项允许在命令任何部位生效, 并且会根据当前命令选择是否展示选项的帮助信息Args
name 的flag附加现在不需要以|
分隔Args
name 允许用#...
为单个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
->pushback
output_send
合并到output_manager
Option
添加参数priority
, 仅在需要选项重载时安排优先级- 修复bugs
Alconna 0.9.x
Alconna 0.9.0:
- 将 HelpAction 与 HelpTextFormatter 作为 help 模块
- 语言配置组件的增强. 现在以语言种类标识符作为父级, 以支持多语言.
- 为 manager 新增一个记录命令输入的 LruCache. 解析器可以使用这个缓存来避免重复解析. 目前缓存上限为 100.
- 新增
--shortcut
内置选项, 为命令提供临时快捷命令的创建与删除. - 修改 manager 中的
shortcut
, 并支持持久化 - 部分性能优化, 以大致抵消因缓存计算而带来的性能损耗.
- 部分 api 名称变更:
pattern
->pattern_gen
handle_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.