Skip to content

Releases: ArcletProject/Alconna

Alconna 1.8.4

06 Mar 07:58
Compare
Choose a tag to compare

新增

  • command_manager.update 上下文方法,用于修改 Alconna 对象后更新与其绑定的其他组件

    from arclet.alconna import Args, Alconna, Option, command_manager
    
    alc = Alconna("test")
    
    with command_manager.update(alc):
        alc.prefixes = ["!"]
        alc.add(Option("foo", Args["bar", int]))
    # 解析器等将同步更新

Full Changelog: v1.8.3...v1.8.4

Alconna 1.8.3

01 Mar 10:26
Compare
Choose a tag to compare

修复

  • 修复 shortcut.wrapper 的处理逻辑

Full Changelog: v1.8.2...v1.8.3

Alconna 1.8.2

01 Mar 06:46
Compare
Choose a tag to compare

修复

  • 修复 manager.get_shortcuts 的错误

Full Changelog: v1.8.1...v1.8.2

Alconna 1.8.1

28 Feb 07:56
Compare
Choose a tag to compare

破坏性改动

  • 删除 ContextVal 表达式

新增

  • NamespaceCommandMeta 新增 context_style 属性,用于指定命令插值的格式,不填入则默认不启用插值:
    from dataclasses import dataclass
    from arclet.alconna import Alconna, Args, CommandMeta
    
    alc = Alconna("test", Args["foo", str], meta=CommandMeta(context_style="bracket"))
    
    @dataclass
    class User:
      id: str
    
    @dataclass
    class Session:
      user: User
    
    arp = alc.parse(
      "test {session.user.id}",
      {"session": Session(user=User(id="123"))}
    )
    assert arp.query[str]("foo") == "123"

改进

  • 命令插值的结果现在受类型约束

Full Changelog: v1.8.0...v1.8.1

Alconna 1.8.0

26 Feb 11:57
Compare
Choose a tag to compare

此版本为 v1.x 与 v2.0 之间的过渡版本

破坏性改动

用户侧

  • Args.__init__ 不再接受 **kwargs 参数
  • Alconna.parse 不再接受 duplication 参数;请直接使用 Duplication(Arparma)
  • fuzzy_threshold 参数移至 Namespace

开发侧

  • NEPattern 依赖升级至 0.6.x
  • 移除兼容名称 ArpamarDataCollectionContainer

新增

  • Alconna.parse 新增 ctx: dict[str, Any] 参数,用于传入上下文.

    1. 用户可以通过 $argv.overrides 参数来覆盖 Argv 的属性
  • Arparma 新增 context 参数,与 Alconna.parsectx 参数对应

    1. 当触发快捷指令后,用户可以通过 $shortcut.trigger, $shortcut.args, $shortcut.rest 来获取快捷指令的信息
  • 新增 ContextVal 表达式,可以依据用户传入的指定键从 ctx 中获取值

    1. ContextVal 默认格式为 $(KEY), 其中 KEYctx 中的键
    2. 使用 ContextVal(style="bracket") 可以将 ContextVal 的格式改为 {KEY}
    3. 指定键支持 eval 表达式,如 $(session.user.id), $(session.user.name[1:])
    4. ContextVal 支持只允许指定的键,如 ContextVal("session", "event")
    from dataclasses import dataclass
    from arclet.alconna import Alconna, Args, ContextVal
    
    alc = Alconna("test", Args["foo", ContextVal(style="bracket")])
    
    @dataclass
    class User:
      id: str
    
    @dataclass
    class Session:
      user: User
    
    arp = alc.parse(
      "test {session.user.id}",
      {"session": Session(user=User(id="123"))}
    )
    assert arp.query[str]("foo") == "123"

改进

  • Subcommand 可以设置别名了
  • Alconna 的前缀可以在最尾端塞分隔符

修复

  • 修复类型提示错误

Full Changelog: v1.7.44...v1.8.0

Alconna 1.7.44

22 Feb 05:34
Compare
Choose a tag to compare

修复

  • 修复 shortcut list 的 bug

Full Changelog: v1.7.43...v1.7.44

Alconna 1.7.43

10 Feb 11:38
Compare
Choose a tag to compare

改进

  • 允许快捷指令的关键词传入带有分隔符的命令

修复

  • 修复快捷指令使用 _ 时的异常错误

Full Changelog: v1.7.42...v1.7.43

Alconna 1.7.42

07 Jan 13:33
Compare
Choose a tag to compare

改进

  • 设置了 completion 的 Arg 在输出文本中会显示其名字

修复

  • 修复 Alconna.__call__ 接受 sys.argv[1:] 时没有处理引号包裹的参数的 bug

Full Changelog: v1.7.41...v1.7.42

Alconna 1.7.41

25 Dec 08:48
Compare
Choose a tag to compare

改进

  • Args 现在可以设置多个 MultiVar 参数
  • 可以通过 config.remainder 配置字符来设置多个多参数之间的分隔符

Alconna 1.7.40

18 Dec 13:17
Compare
Choose a tag to compare

改进

  • 可以通过 NamespaceCommandMetastrict 参数来控制是否允许将多余的命令参数作为 “$extra" 参数写入

修复

  • 修复快捷指令存在意外匹配的问题

Full Changelog: v1.7.39...v1.7.40