Releases: ArcletProject/Alconna
Releases · ArcletProject/Alconna
Alconna 1.7.12
变更
- Multi-KeyWord_Var 参数的键值分隔符现在不允许与 Multi-Var 参数的分隔符相同
- 修复 Multi-Var 会一并解析 Multi-KeyWord-Var 的bug
Full Changelog: v1.7.11...v1.7.12
Alconna 1.7.11
变更
- 修复
Arparma.call
导致pos | kw
参数解包错误的 bug - 修复 kwbool 参数无法解析
-no-xx
的 bug
Full Changelog: v1.7.10...v1.7.11
Alconna 1.7.10
修复:
- 修复类型导致的 py3.8 兼容性问题
Alconna 1.7.9
What's Changed
- ⬆️ Bump dependabot/fetch-metadata from 1.5.1 to 1.6.0 by @dependabot in #79
- kwonly 的 arg 现在不再要求传入顺序与定义顺序一致:
from arclet.alconna import Kw, Args, Alconna alc = Alconna("draw", Args["width", Kw[float]]["height", Kw[float]]) assert alc.parse("draw --width=360.0 --height=240.0").matched assert alc.parse("draw --height=240.0 width=360.0").matched
Arparma.call
现在适配positional_only
参数, 并会将var_positional
,var_keyword
的参数解包
Full Changelog: v1.7.8...v1.7.9
Alconna 1.7.8
更改
- ⬆️ Bump dependabot/fetch-metadata from 1.4.0 to 1.5.1 by @dependabot in #78
Arg
现在可以使用泛型参数- 修复
Args.from_callable
不能正确处理 kwonly 参数的错误
Full Changelog: v1.7.7...v1.7.8
Alconna 1.7.7
改进:
- 命令头部可以通过
\\
转义{}
为原始字符,而不触发bracket header
解析 - 快捷指令的参数部分可以通过
\\
转义{}
为原始字符alc = Alconna("RD{num:int}") assert alc.parse("RD100").matched alc1 = Alconna(r"RD\{num:int\}") assert alc.parse("RD{num:int}").matched
修复:
- 修复
append_value
时列表对象引用错误的 bug
Full Changelog: v1.7.6...v1.7.7
Alconna 1.7.6
修复:
- 修复所有指令都可以响应快捷命令的bug
Alconna 1.7.5
改进:
- 命令头部在非
bracket header
时只有前缀为"re:"
时才会被视为正则表达式 - 当命令头部不存在正则表达式时, 匹配将直接使用 set 比对
Alconna.help_text
现在与Alconna.meta.description
一致shortcut
现在将尝试去除非字符串的命令前缀
修复:
- 修复
find_shortcut
传入意外参数的 bug - 修复
sys.argv[0]
处理错误的 bug
Alconna 1.7.1
修复:
- 修复
Arparma.error_info
总为 str 的 bug
Alconna 1.7.0
破坏性改动:
用户侧
ShortcutArgs
不再需要options
, 其合并至args
Alconna.parse
移除参数interrupt
, 由CompSession
替代
开发侧
- 使用
NEPattern
0.5 以上版本 - 使用
tarina
替代部分功能 DataCollectionContainer
,Analyser
,handle_xxx
和analyser_xxx
等移动至arclet.alconna._internal
DataCollectionContainer
重命名为Argv
Argv.config
移出为独立函数argv_config
Argv.text_sign
现在是Argv.to_text
, 其返回值为str | None
新增:
Option
新增参数compact
, 允许选项名后的第一个参数紧随其头部Option
新增参数default
, 允许设置选项的默认值:- 传入的任意值会被包装为
OptionResult
, 除非其为None
- 直接传入
OptionResult
会被直接使用 - 若想设置 args 的默认值, 请传入
OptionResult
- 传入的任意值会被包装为
Subcommand
新增参数default
, 允许设置子命令的默认值- 传入的任意值会被包装为
SubcommandResult
, 除非其为None
- 直接传入
SubcommandResult
会被直接使用 - 若想设置 args 的默认值, 请传入
SubcommandResult
- 传入的任意值会被包装为
CommandMeta
与Namespace
新增compact
属性, 允许命令传入的第一个参数紧随其头部Namespace
新增to_text
属性, 其与Argv.to_text
一致- 加入
CompSession
, 用于交互式命令补全session.available
: 表示当前补全会话是否可用session.current()
: 当前选中的补全选项的文本session.tab([, offset])
: 切换补全选项session.enter([, content])
: 确认当前补全选项
Alconna
的名字与前缀无传入时,取用 sys.argv[0] 作为其名字Alconna
现支持__call__
, 即直接调用实例; 当命令名与 sys.argv[0] 接近时, 传入命令不需要输入命令头Action
改动, 现在Action
功能更接近于argparse
:- args 为空时:
store
: 默认的 action, 存放...
或default
的值store_value
,store_true
,store_false
: 存放特殊值append
: 追加...
或default
的值append_value
: 追加特殊值count
: 计数
- args 不为空时:
store_xxx
,count
: 最新的 args 结果会覆盖上一次append_xxx
: 此次的 args 结果会与之前的合并成列表
- args 为空时:
- 新增
set_default_argv_type
函数, 用于设置默认的Argv
类型 CommandMeta.example
现在会将$
替换为可能的命令前缀Completion
选项增加别名'?'
改进:
- 由
name
与requires
合成的dest
也会去掉name
的前缀 Argv
不再是Analyser
的属性, 而是其方法的传入参数compile
函数现在作为Alconna
的方法- shortcut 使用方法改变:
ShortcutArgs
增加fuzzy
参数, 用于指定该快捷命令是否允许后随参数, 默认为True
- 可以通过
{%X_n}
来引用传入的快捷命令的第 n 个参数 - 可以通过
{*(SEP)}
来引用传入的快捷命令的所有参数, 其中 SEP 为可选的分隔符
- bracket header 现在支持进行类型转换
- 性能优化, 提升25% ~ 30%
set_default
的arg
,option
,subcommand
合并为path
, 原参数仍可用Arg
中name
的后缀标识符不强制需要';'
作为分割, 即foo;?
与foo?
等价Argv.preprocessor
与Argv.filter_out
现在接收 type 而不是 str- 移除
Alconna.reset_behaviors
修复:
- 修复
anti args
的 bug - 修复
Formatter.remove
的 bug