Skip to content

Releases: ArcletProject/Alconna

Alconna 1.7.12

04 Jul 12:34
Compare
Choose a tag to compare

变更

  • Multi-KeyWord_Var 参数的键值分隔符现在不允许与 Multi-Var 参数的分隔符相同
  • 修复 Multi-Var 会一并解析 Multi-KeyWord-Var 的bug

Full Changelog: v1.7.11...v1.7.12

Alconna 1.7.11

03 Jul 14:56
Compare
Choose a tag to compare

变更

  • 修复 Arparma.call 导致 pos | kw 参数解包错误的 bug
  • 修复 kwbool 参数无法解析 -no-xx 的 bug

Full Changelog: v1.7.10...v1.7.11

Alconna 1.7.10

03 Jul 11:25
Compare
Choose a tag to compare

修复:

  • 修复类型导致的 py3.8 兼容性问题

Alconna 1.7.9

03 Jul 11:16
Compare
Choose a tag to compare

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

30 Jun 15:01
Compare
Choose a tag to compare

更改

  • ⬆️ 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

27 May 06:59
Compare
Choose a tag to compare

改进:

  • 命令头部可以通过 \\ 转义 {} 为原始字符,而不触发 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

20 May 12:10
Compare
Choose a tag to compare

修复:

  • 修复所有指令都可以响应快捷命令的bug

Alconna 1.7.5

19 May 15:02
Compare
Choose a tag to compare

改进:

  • 命令头部在非 bracket header 时只有前缀为 "re:" 时才会被视为正则表达式
  • 当命令头部不存在正则表达式时, 匹配将直接使用 set 比对
  • Alconna.help_text 现在与 Alconna.meta.description 一致
  • shortcut 现在将尝试去除非字符串的命令前缀

修复:

  • 修复 find_shortcut 传入意外参数的 bug
  • 修复 sys.argv[0] 处理错误的 bug

Alconna 1.7.1

12 May 08:32
Compare
Choose a tag to compare

修复:

  • 修复 Arparma.error_info 总为 str 的 bug

Alconna 1.7.0

11 May 06:01
Compare
Choose a tag to compare

破坏性改动:

用户侧

  • ShortcutArgs 不再需要 options, 其合并至 args
  • Alconna.parse 移除参数 interrupt, 由 CompSession 替代

开发侧

  • 使用 NEPattern 0.5 以上版本
  • 使用 tarina 替代部分功能
  • DataCollectionContainer, Analyser, handle_xxxanalyser_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
  • CommandMetaNamespace 新增 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 结果会与之前的合并成列表
  • 新增 set_default_argv_type 函数, 用于设置默认的 Argv 类型
  • CommandMeta.example 现在会将 $ 替换为可能的命令前缀
  • Completion 选项增加别名 '?'

改进:

  • namerequires 合成的 dest 也会去掉 name 的前缀
  • Argv 不再是 Analyser 的属性, 而是其方法的传入参数
  • compile 函数现在作为 Alconna 的方法
  • shortcut 使用方法改变:
    • ShortcutArgs 增加 fuzzy 参数, 用于指定该快捷命令是否允许后随参数, 默认为 True
    • 可以通过 {%X_n} 来引用传入的快捷命令的第 n 个参数
    • 可以通过 {*(SEP)} 来引用传入的快捷命令的所有参数, 其中 SEP 为可选的分隔符
  • bracket header 现在支持进行类型转换
  • 性能优化, 提升25% ~ 30%
  • set_defaultarg, option, subcommand 合并为 path, 原参数仍可用
  • Argname 的后缀标识符不强制需要 ';' 作为分割, 即 foo;?foo? 等价
  • Argv.preprocessorArgv.filter_out 现在接收 type 而不是 str
  • 移除 Alconna.reset_behaviors

修复:

  • 修复 anti args 的 bug
  • 修复 Formatter.remove 的 bug