A Fast Command Analyser based on Dict and Pydantic

Overview

Alconna

Licence PyPI PyPI - Python Version

Alconna 隶属于ArcletProject, 在Cesloi内有内置

AlconnaCesloi-CommandAnalysis 的高级版,支持解析消息链

一般情况下请当作简易的消息链解析器/命令解析器

文档

暂时的文档

Example

from arclet.alconna import Alconna
from arclet.alconna.component import Option, Subcommand
from arclet.alconna.types import AnyStr

cmd = Alconna(
    command="/pip",
    options=[
        Subcommand("install", Option("--upgrade"), pak_name=AnyStr)
        Option("list"),
    ]
)

msg = "/pip install cesloi --upgrade"
result = cmd.analysis_message(msg) # 该方法返回一个Arpamar类的实例
print(result.get('install'))

其结果为

{'pak_name': 'cesloi', 'upgrade': Ellipsis}

用法

通过阅读Alconna的签名可以得知,Alconna支持四大类参数:

  • headers : 呼叫该命令的命令头,一般是你的机器人的名字或者符号,与command至少有一个填写. 例如: /, !
  • command : 命令名称,你的命令的名字,与headers至少有一个填写
  • options : 命令选项,你的命令可选择的所有option,是一个包含Subcommand与Option的列表
  • main_argument : 主参数,填入后当且仅当命令中含有该参数时才会成功解析

解析时,先判断命令头(即 headers + command),再判断options与main argument, 这里options与main argument在输入指令时是不分先后的

假设有个Alconna如下:

Alconna(
    headers=["/"],
    command="name",
    options=[
        Subcommand(
            "sub_name",
            Option("sub_opt", sub_opt_arg="sub_arg"), 
            sub_main_arg="sub_main_arg"
        ),
        Option("opt", opt_arg="opt_arg")
    ]
    main_argument="main_argument"
)

则它可以解析如下命令:

/name sub_name sub_opt sub_arg sub_main_arg opt arg main_argument
/name sub_name sub_main_arg opt arg main_argument
/name main_argument opt arg
/name main_argument

解析成功的命令的参数会保存在analysis_message方法返回的Arpamar实例中

性能参考

在 i5-10210U 处理器上, Alconna 的性能大约为 36000~41000 msg/s, 取决于 Alconna 的复杂程度

Comments
  • [Feature]api改进提议-No.2

    [Feature]api改进提议-No.2

    检查

    • [x] 新特性的目的明确
    • [x] 我已经阅读了文档 the wiki 并且找不到类似特性

    Feature

    概要

    1. 提供更简单的构造方式:
    class Alc:
        main = Args[...]
        opt1 = Option(...)
        sub = Subcommand(...)
    delegate(Alc).parse(...)
    
    1. ArgPattern提供简易的构造方法,例如
    def my_converter(text:str):
        return int(text)
    with convert(my_converter, r"\d+") as int_:
        args = Args["foo":int_]
    

    或者是

    @pattern("int_", r"\d+")
    def my_converter(text:str):
        return int(text)
    ...
    args = Args["foo":"int_"]
    
    1. 可变参数提供长度限制,如
    args = Args["tag[3]":str]
    
    1. 接入权限接口
    enhancement 
    opened by RF-Tar-Railt 9
  • [Feature]api优化意见及建议-No.1

    [Feature]api优化意见及建议-No.1

    检查

    • [x] 新特性的目的明确
    • [x] 我已经阅读了文档 the wiki 并且找不到类似特性

    Feature

    概要 以下会作为0.6.5-0.7的更改内容

    1. 解析器api部分细化, Args- Analyse按情况需要进行可拓展化
    2. 几类特殊构造方式独立出去,而不是作为类方法
    3. Subcommand取消*option,而是传入Iterable[Option]
    4. help与separate方法内移进init里

    and more……

    enhancement 
    opened by RF-Tar-Railt 5
  • [Feature]添加Click-Like构造方式

    [Feature]添加Click-Like构造方式

    检查

    • [x] 新特性的目的明确
    • [x] 我已经阅读了文档 the wiki 并且找不到类似特性

    Feature

    概要 用类似于Click构造command的方式构造一个Alconna

    是否已有相关实现

    command_decorate = AlconnaDecorator()
    @command_decorate()
    @command_decorate.option("--foo", Args["bar":str])
    def test(bar: str):
        ...
    

    其他内容 1.该方式不支持传入多类命令头 2.该方式装饰的函数暂定为main_args_action 3.该方式或许有其他更简易的相关实现

    enhancement 
    opened by RF-Tar-Railt 4
  • [Feature] 选择Alconna解析模式

    [Feature] 选择Alconna解析模式

    有序: Option("--test", Args["foo":"bar", "aaa":int:234], disorder=False) # default False --test bar 666--test 123 barX

    无序: Option("--test", Args["foo":"bar", "aaa":int:234], disorder=True) --test bar 666--test 123 bar

    enhancement 
    opened by RF-Tar-Railt 4
  • [Feature]AlconnaMessageProxy

    [Feature]AlconnaMessageProxy

    检查

    • [x] 新特性的目的明确
    • [x] 我已经阅读了文档 the wiki 并且找不到类似特性

    Feature

    概要 负责提供一个模版类,包括消息的获取规范与解析结果的处理规范

    是否已有相关实现 main.py:

    amp = DefaultAlconnaMessageProcessor(loop=loop)
    alc = Alconna("command", main_args="foo:str").callback(lambda foo:foo)
    amp.run()
    

    AMP.py:

    class AbstractAlconnaMessageProcessor:
        async def fetch_message():
            ...
        async def execute_handler():
            ...
    

    其他内容 该内容随时可能被驳回

    enhancement 
    opened by RF-Tar-Railt 3
  • Sourcery refactored main branch

    Sourcery refactored main branch

    Branch main refactored by Sourcery.

    If you're happy with these changes, merge this Pull Request using the Squash and merge strategy.

    See our documentation here.

    Run Sourcery locally

    Reduce the feedback loop during development by using the Sourcery editor plugin:

    Review changes via command line

    To manually merge these changes, make sure you're on the main branch, then run:

    git fetch origin sourcery/main
    git merge --ff-only FETCH_HEAD
    git reset HEAD^
    

    Help us improve this pull request!

    opened by sourcery-ai[bot] 2
  • ⬆️ Update nepattern requirement from ~=0.1.2 to >=0.1.2,<0.3.0

    ⬆️ Update nepattern requirement from ~=0.1.2 to >=0.1.2,<0.3.0

    Updates the requirements on nepattern to permit the latest version.

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • [Feature] Arpamar 改进

    [Feature] Arpamar 改进

    在此前版本中,Arpamar 仅作为解析结果载体,无法很好的与其他组件互通

    为此,Arpamar 或许会进行如下调整:

    1. 添加origin与source,代表传入的原消息与 Alconna
    2. 添加get_duplication
    3. 与BehaviorInterface合并
    4. 添加以传入Type返回Dict[str, Type]的方法
    enhancement 
    opened by RF-Tar-Railt 1
  • Add license scan report and status

    Add license scan report and status

    Your FOSSA integration was successful! Attached in this PR is a badge and license report to track scan status in your README.

    Below are docs for integrating FOSSA license checks into your CI:

    opened by fossabot 1
  • [Feature] ActionBehavior

    [Feature] ActionBehavior

    自0.9.0开始,因为默认引入缓存机制,参数动作(ArgAction)会因为原先的解析时运行只会在某个命令首次解析时执行。

    因此,考虑将Action的执行行为全权交给一个内置的Behavior

    该Behavior的实现需要满足如下要求:

    1. Arpamar 可以访问原 Alconna
    2. Alconna 会在解析器内被生成一个action映射表,表示该Alconna内所有含Action的组件
    3. Arpamar 能够更便捷的访问选项与选项参数

    注:特殊的两个选项helpshortcut不受此影响

    enhancement 
    opened by RF-Tar-Railt 1
  • [Bug] 开启报错后 GraiaDispatcher 报

    [Bug] 开启报错后 GraiaDispatcher 报"非法元素"

    请确认:

    • [x] 问题的标题明确
    • [x] 我翻阅过其他的issue并且找不到类似的问题
    • [x] 我已经阅读了文档 the wiki 并仍然认为这是一个Bug

    Bug

    问题

    当消息传入时会在处理消息阶段报错

    预期行为

    对于过滤元素的报错消息应当忽略

    使用环境:

    • Python 版本: 3.9
    • Alconna 版本: 0.8.1

    日志/截图

    image

    image

    bug 
    opened by RF-Tar-Railt 1
Releases(v1.4.1)
  • v1.4.0(Dec 4, 2022)

    1. 改进字符串分割过程,以运行更细粒度的分隔控制
    2. 加入ArparmaExecutor,以绑定一个响应函数
    3. behaviors与formatter的配置移至Namespace, 原Alconna.config仅用于配置解析器类型
    4. Alconna构建时不再允许废弃的kwargs参数传入
    5. 'Arpamar' -> 'Arparma'
    6. 改进 Args 构建, 加入 Arg 类 替代原先的 ArgUnit,并保留参数名后缀传入
    7. 可变参数与键值参数需要通过 alconna.typing.MultiVaralconna.typing.KeyWordVar 显式声明, 并提供 alconna.typing.Kw 来进行缩写 (如 Kw @ int)
    8. 修复可能存在的内存泄漏问题
    9. 原先的 ArgFlag 'H','O','A' 变回 '/','?','!'
    10. Args.separators 移除,分割任务转移给 Arg.separators
    11. set_default 现在可以传入 factory 参数, 并且必须传入关键字参数
    Source code(tar.gz)
    Source code(zip)
    arclet_alconna-1.4.0-py3-none-any.whl(52.81 KB)
  • v1.3.2(Oct 15, 2022)

    1. 添加通过"+"以组合字符串与选项或者子命令等隐式构建命令的方法
    2. 允许自定义内建选项的名称,比如改"--help"为"帮助"
    3. Arpamar.find 现在可以用 query_path 了
    4. Arpamar.query 现在返回的是MappingProxyType, 若需要修改path的值请用Arpamar.update
    5. 修复 bugs
    6. 调整lang config
    7. 修改 help text 的 bug
    8. 调整 completion 样式
    Source code(tar.gz)
    Source code(zip)
    arclet_alconna-1.3.2.1-py3-none-any.whl(52.53 KB)
  • v1.3.0(Sep 19, 2022)

    1. 修复 bugs
    2. 调整 Alconna的构造样式, 将header、command、options等合并; 兼容旧版写法到1.4
    3. 原先的builtins迁移至arclet-alconna-tools, 只保留set_default、store_value与version
    4. set_default可以附加一个 arg 名
    5. 调整repr样式
    6. 取消 shortcut的expiration
    7. 新增命名空间配置,并将原先部分全局配置划为命名空间下的配置
    8. 允许.parse传入参数interrupt(bool)以在参数缺失的情况下可后续自行加参数
    Source code(tar.gz)
    Source code(zip)
    arclet_alconna-1.3.0-py3-none-any.whl(51.63 KB)
  • v1.2(Aug 25, 2022)

    Alconna 1.2.0:

    1. 修复 bugs
    2. 加入 ArgField, 可填入 alias, default_factory等 #50
    3. 命令管理器可以获取原始的命令数据 #52
    4. 加入命令补全功能, 暂由--comp|-cp触发 #53
    5. 加入 CommandMeta, 并取代help_textis_raise_exception
    6. meta 新增 hide, 可以在命令管理器获取所有帮助时跳过该命令 #51
    Source code(tar.gz)
    Source code(zip)
    arclet_alconna-1.2.0-py3-none-any.whl(61.17 KB)
  • v1.1(Jul 14, 2022)

    Alconna 1.1.2:

    1. 修复 bugs
    2. BasePattern 加入 to 方法

    Alconna 1.1.1:

    1. Arpamar 泛型支持, 可通过Arpamar[type]指定原指令的类型
    2. Alconna 可通过 | 进行组合, 返回命令组
    alc = Alconna("{place1}在哪里") | Alconna("哪里有{place1}")
    alc.parse("食物在哪里")
    alc.parse("哪里有食物")
    

    Alconna 1.1.0:

    1. AlconnaDuplication -> Duplication
    2. Duplication 现在支持写入参数名或头部名称, 如
    command = Alconna("test", Args["foo", int]) + Option("bar", Args["bar", str])
    
    class Demo(Duplication):
        foo: int
        bar: str
    
    1. Arpamar 在执行行为器时可以通过抛出 OutBoundsBehave 使解析失败
    2. 修复bugs
    Source code(tar.gz)
    Source code(zip)
    arclet_alconna-1.1.0-py3-none-any.whl(65.08 KB)
  • v1.0(Jun 25, 2022)

    日志

    1. lang迁移到新增的config中,并为config加入了如全局分隔、开启缓存等选项
    2. 压缩代码量并规范化
    3. --help 选项允许在命令任何部位生效, 并且会根据当前命令选择是否展示选项的帮助信息
    4. Args name 的flag附加现在不需要以|分隔
    5. Args name 允许用#...为单个Arg提供注释, 其会展示在帮助信息内
    6. Args 允许传入 Callable[[A], B] 作为表达, 会自动解析输入类型与输出类型
    7. 完善了测试代码, 位于测试文件夹内, 通过入口文件可执行全部测试
    8. 加入一个类似beartypechecker
    9. 命令头部允许使用非str类型, 即可以Alconna(int)
    10. 解析器增加预处理器选项, 允许在分划数据单元前进行转化处理
    11. 性能提升, 理想情况最快约为 20w msg/s
    12. 删除Alconna.set_action
    13. 重构 ObjectPattern
    14. 增加 datetime的 BasePattern, 支持传入时间戳或日期文字
    15. Analyser 的字段修改, next_data -> popitem, reduce_data -> pushback
    16. output_send 合并到 output_manager
    17. Option 添加参数priority, 仅在需要选项重载时安排优先级
    18. 修复bugs
    Source code(tar.gz)
    Source code(zip)
  • v0.9(May 1, 2022)

    Alconna 0.9.0:

    1. 将 HelpAction 与 HelpTextFormatter 作为 help 模块
    2. 语言配置组件的增强. 现在以语言种类标识符作为父级, 以支持多语言.
    3. 为 manager 新增一个记录命令输入的 LruCache. 解析器可以使用这个缓存来避免重复解析. 目前缓存上限为 100.
    4. 新增 --shortcut 内置选项, 为命令提供临时快捷命令的创建与删除.
    5. 修改 manager 中的 shortcut, 并支持持久化
    6. 部分性能优化, 以大致抵消因缓存计算而带来的性能损耗.
    7. 部分 api 名称变更:
    • pattern -> pattern_gen
    • handle_message -> process_message
    1. Args 新增 add_argument 方法, 以添加参数.

    Alconna 0.9.1:

    1. 增添 dest, 其作为选项在 Arpamar 中的实际名称.
    2. 增加内建 Argument 方法, 类似于 add_argument, 以便捷创建 Option + Args 的组合.
    3. 修复 bug

    Alconna 0.9.2:

    1. 增强 Arpamar 的功能, 使其更类似于一种接口. 其中的修改有: #42
    • get() 变为 query()
    • has() 变为 find()
    • set() 变为 update()
    • update() 变为 execute()
    • 增加 get_duplication()
    • 增加 source, origin 属性
    1. 项目结构调整
    2. ArgAction 的执行现在交给 ActionHandler 来处理. #40
    3. split 以及 separator 现在需要传入 Set[str] 类型. #39
    4. 修复 bug.

    Alconna 0.9.3:

    1. 合并 ArgPatternTypePatternBasePattern, 并将诸多分散特性(如 anti, any) 移动到 BasePattern 中. #34
    2. 取消 Analyser 中有关 arg_handler 的部分
    3. AnyStrAnyDigitAnyFloat 等现在不被公开.
    4. AnyParam 重写为由 BasePattern 实现, 并改名为 AnyOne.
    5. alconna.types 变为 alconna.typing.
    6. 修复 bug.

    Alconna 0.9.4:

    1. 修改 Args 的构造方法, 取消使用 slice 传入参数. 请从 Args[foo:int, bar:str:default] 修改为 Args[foo, int][bar, str, default].
    2. Option 与 Subcommand 现支持 requires 参数, 该参数允许解析该节点时判断 require 的字段是否存在. #44
    3. Option 与 Subcommand 的 requires 可以通过 name 传入, 用空格分隔. 该特性要求 Option 中传入别名时不能用空格.
    4. 允许同名的 Option 与 Subcommand 在同一个命令中, 应保证能用 require 参数来区分.
    5. 允许简单的选项重载, 如 Option("foo", Args.bar[int]) 可以与 Option("foo") 一起使用.
    6. BasePattern 增加 validator 属性, 负责对匹配结果进行验证. #47
    7. Args 支持 Annotated 的传入, 如 Args.bar[Annotated[int, lambda x: x > 0]], 或使用 arclet.alconna.typing.Bind
    8. 加入 AlconnaGroup 类, 用于组合多个 Alconna 对象. 其解析行为与 Alconna 相同. #46
    9. 取消不能构建多个重名的 Alconna 对象, 以 AlconnaGroup 代替. (暂定)
    10. 删除 arclet.alconna.components.visitor, 修改 Formatter 的传入参数.
    11. 增加 Alconna.config 类方法, 用于设置全局配置.
    12. 移出 arclet.alconna.builtin.commandline, 独立为一个模块 alconna-cli.
    13. ObjectPattern 移动到 arclet.alconna.builtin.pattern 模块.
    14. 修复 bug.
    Source code(tar.gz)
    Source code(zip)
    arclet_alconna-0.9.0-py3-none-any.whl(65.54 KB)
    arclet_alconna-0.9.1.2-py3-none-any.whl(66.82 KB)
    arclet_alconna-0.9.2.1-py3-none-any.whl(66.41 KB)
    arclet_alconna-0.9.3-py3-none-any.whl(65.34 KB)
    arclet_alconna-0.9.3.2-py3-none-any.whl(65.45 KB)
    arclet_alconna-0.9.4-py3-none-any.whl(63.24 KB)
  • v0.8(Apr 2, 2022)

    Alconna 0.8.0:

    1. Optionalias现在需要传入List[str],而不是str。
    2. help_text内置两个预选板块UsageExample, 编写规则为"xxx Usage:xxx; Example:xxx;"
    3. 加入TypePattern, 作用为简单的类型转换器, 其可以设置前置转换器, 即可以str -> Path -> bytes。 #34
    4. 加入命令的模糊匹配, 在Alconna中传入is_fuzzy_match参数, 可以设置是否模糊匹配。
    5. AlconnaString参数规则修改, 现在<xx>表示必选, [xx]表示可选, &xx表示action的值。
    6. ArgparseHelpTextFormatter相关格式修改

    Alconna 0.8.1-0.8.2:

    1. 修改了一些docstring
    2. 修改参数前缀, 现需要以后缀形式传入, 以';'为开头, 并用'|'分割。 #35
    3. 参数前缀现通过单个大写字母表示, 具体对应如下:
    • 'S' <= '*'
    • 'W' <= '**'
    • 'O' <= '?'
    • 'K' <= '@'
    • 'H' <= '_'
    • 'F' <= '#'
    • 'A' <= '!'
    1. 参数标识符现增加数字, 以表示指定长度的可变参数, 如'foo;S'表示能接收任意长度的可变参数, 'foo;3'表示接收长度为3的可变参数。 #35
    2. Args现在允许传入分隔符, 通过Args.separate(xx)Args / xx设置
    3. 加入pattern装饰器函数, 用以便捷的创建ArgPattern对象 #35
    4. 加入delegate装饰器函数, 用以便捷的创建Alconna对象
    5. 修复bug

    Alconna 0.8.3:

    1. 命令头的正则支持格式修改, 由原来的f"{表达式}"改为"{名称:类型或表达式}"
    2. 加入语言文件配置, 可以通过Alconna.load_config_file加载自定义的语言文件, 格式为json
    3. 为选项与子命令的匹配也加入了模糊匹配
    4. 选项与子命令的separator可以传入空字符串, Alconna会据此自动分割 #35
    5. 部分API修改, 暂时去除from_dict方法
    6. 修复了一些bug
    Source code(tar.gz)
    Source code(zip)
    arclet_alconna-0.8.0-py3-none-any.whl(58.02 KB)
    arclet_alconna-0.8.1-py3-none-any.whl(58.04 KB)
    arclet_alconna-0.8.2-py3-none-any.whl(60.01 KB)
    arclet_alconna-0.8.3.1-py3-none-any.whl(60.82 KB)
  • v0.7(Mar 1, 2022)

    Alconna 0.7.0

    1. 依据 #21 进行了相关调整, 不兼容0.7以下
    2. 以下多个组件或模块进行了修改, 具体内容请查看 更新日志
    • Alconna
    • TemplateCommand
    • Subcommand
    • Arpamar
    • ArgAction
    • AlconnaDecorate
    • alconna.analyser
    1. 增加alconna.analysis,

    Alconna 0.7.1:

    1. 增加alconna.builtin.construct.AlconnaFire,为AlconnaFire-like方法. #22 其会尝试根据传入的对象生成Alconna
    2. 增加 UnionArg, 其传入的列表中可以包含ArgPatternType与实际值. 为choice的改进
    3. Args支持传入Union[...]格式的参数
    4. 增加 ObjectPattern, 其会尝试从对象中生成ArgPattern, 并在解析成功后创建实例
    5. action现支持传入异步函数 #23
    6. AlconnaString现在会读取locals的值

    Alconna 0.7.2:

    1. 改进AlconnaFire方法, 其可通过AlconnaFire.instance获取目标对象的可能实例 #27
    2. 加入SequenceArgMappingArg, 其对应解析列表、元组、集合与字典
    3. Subcommand在其Args未解析时抛出异常
    4. Arpamar现在可以获取subcommands与error_info
    5. 增强Format #25
    6. 修改help—action相关

    Alconna 0.7.3:

    1. 优化结构
    2. 增加AlconnaFire的Config, 用来约束AlconnaFire的参数 #27
    3. AlconnaFire现在可以解析子命令, 通过Config传入get_subcommand=True来启用 #26
    4. 更好的parameter-helptext
    5. 新增Args构造方法a = Args.xxx[value, default]
    6. util.chain_filter重新归并到Analyser.handle_message
    7. 增加Force类, 用以标记arg类型不需要进行转换; 或者在key前面加上"#"
    8. 支持传入键值对参数与可变键值对参数, 分别用"@""**""标记
    9. 支持将参数设为可选(即未解析成功时不报错而是跳过), 用"?"标记
    10. Arpamar可以通过XXX.opt.arg1XXX.sub.sub_opt.arg2等方式获取参数值
    11. 修复bug

    Alconna 0.7.4 ~ 0.7.4.3

    1. 修复BUG
    2. 加入Alconna.local_args
    3. 增加_key前缀, 用以隐藏参数注解

    Alconna 0.7.5

    1. 内部类型改进, MessageChain -> DataCollection #29
    2. 加入ArpamarBehavior, 用以解析后的预处理, 并提供三个预制的behavior: #30
    • set_default: 当某个选项未被输入时, 使用该行为添加一个默认值
    • exclusion: 当指定的两个选项同时出现时报错
    • cool_down: 限制命令调用频率
    1. 加入NodeVisitorHelpFormatter, 并将原先给CommandNode的help生成转移给Formatter #24
    2. 加入AlconnaMessageProxy, 用作对外适配接口

    Alconna 0.7.6

    1. 增加对Graia系的原生支持, 位于arclet.alconna.graia; 请用pip install arclet-alconna[graia]获取
    2. header现在可支持非文字类元素与文字混用的解析, 原来的方式请改用元组(非文本元素, 文本)
    3. 增加Alconna/@ 运算符的支持, 作用为重置命名空间
    4. 增加Alconna+ 运算符的支持, 作用为增加选项
    5. Args 可直接传入 str, 即Args["foo":"foo"] -> Args["foo"]
    6. Format中的format slot可以直接写入类型, 如"{name: str}"

    Alconna 0.7.7

    1. 加入Argparser风格的HelpFormatter
    2. 加入AlconnaDuplication, 旨在提供更好的解析结果使用
    3. option的name与alias现在会根据长度自动倒换
    4. 修复Bug
    Source code(tar.gz)
    Source code(zip)
    arclet-alconna-0.7.0.tar.gz(30.40 KB)
    arclet-alconna-0.7.1.tar.gz(34.32 KB)
    arclet-alconna-0.7.2.tar.gz(37.35 KB)
    arclet-alconna-0.7.3.tar.gz(39.37 KB)
    arclet-alconna-0.7.4.3.tar.gz(39.61 KB)
    arclet-alconna-0.7.5.tar.gz(43.69 KB)
    arclet-alconna-0.7.6.tar.gz(44.74 KB)
    arclet-alconna-0.7.7.1.tar.gz(47.35 KB)
  • v0.6(Feb 13, 2022)

    Alconna 0.6.0:

    1. 加入click-like构造方法,具体内容在alconna/decorate里 #13
    2. 加入命令行功能,目前功能为便捷式编写Alconna与便捷查看docstring #16
    3. 性能优化, 包含正则参数解析的速度提升大约10%
    4. Option支持重复输入,此时多个解析结果会以列表形式存放

    Alconna 0.6.1:

    1. 性能优化加强, 现在纯字符串匹配可以跑到60000msg/s (与之相对, 匹配其他消息元素可以跑到10w msg/s, re出来挨打)
    2. commandline增加一个analysis功能,可以把命令转为命令格式
    3. 修复Bug

    Alconna 0.6.2:

    1.修复几个Bug 2.加入from_dict与to_dict,暂时无法支持保存action #17 3.命令行功能加入using

    Alconna 0.6.3:

    1. 修复命令行的Bug
    2. 加入变长参数的支持, 可以在参数名前面添加一个*来表示变长参数

    Alconna 0.6.4:

    1. 加入快捷指令功能, 可以用一段特殊的字符串来表示命令 #18
    2. 加入arg-choice, 可以指定参数的可选值
    3. 修改docstring, 使其变得更加可读
    4. 加入commandManager.broadcast功能, 可以广播命令

    Alconna 0.6.5:

    1. 可以自定义all_command_help
    2. 加入anti-arg, 用以反向检查参数 #20
    3. 修复一些bug
    Source code(tar.gz)
    Source code(zip)
    arclet-alconna-0.6.0.tar.gz(21.95 KB)
    arclet-alconna-0.6.1.tar.gz(22.89 KB)
    arclet-alconna-0.6.2.tar.gz(24.75 KB)
    arclet-alconna-0.6.3.tar.gz(25.53 KB)
    arclet-alconna-0.6.4.tar.gz(27.63 KB)
    arclet-alconna-0.6.5.tar.gz(28.06 KB)
  • v0.5(Jan 11, 2022)

    Alconna 0.5.1: 优化整体结构;完善了action相关;修改参数默认值的bug Alconna 0.5.2: 紧急修复Action无法返回值的bug Alconna 0.5.3: 增加自定义消息元素过滤;headers支持传入消息元素 Alconna 0.5.4: 优化结构;Arpamar 现可直接以XXX.name方式获取参数 Alconna 0.5.5: from_sting可以传入option了;修复bug Alconna 0.5.6: 修复Bug; 增加了Email的参数匹配 Alconna 0.5.7: 修复非ArgPattern修饰的参数无法解析消息元素的Bug Alconna 0.5.8: 加入有序匹配模式与命令缓存, 能使性能大大提升 Alconna 0.5.9: help选项可用传入一自定义函数已达到直接发送帮助说明的效果;规范format方法;from_string现在可以用#加入帮助说明;加入commandManager,帮助管理所有命令;支持解析原始消息链

    Source code(tar.gz)
    Source code(zip)
    arclet-alconna-0.5.2.tar.gz(13.68 KB)
    arclet-alconna-0.5.3.tar.gz(14.17 KB)
    arclet-alconna-0.5.4.tar.gz(14.62 KB)
    arclet-alconna-0.5.5.tar.gz(15.27 KB)
    arclet-alconna-0.5.6.tar.gz(16.25 KB)
    arclet-alconna-0.5.7.tar.gz(16.33 KB)
    arclet-alconna-0.5.8.tar.gz(17.16 KB)
    arclet-alconna-0.5.9.tar.gz(19.11 KB)
  • v0.4(Jan 2, 2022)

    Alconna 0.4.1:加入 AnyParam类型 (单次泛匹配)与AllParam类型 (全部泛匹配);修改部分逻辑 Alconna 0.4.2:加入AnyFloat预制正则; Args构造支持传入元组; 增加两种简易构造Alconna的形式; 修复Bug Alconna 0.4.3:加入Action (暂时只针对Option); Args解析出来的结果 (如bool值, int值) 会转为指定的类型

    Source code(tar.gz)
    Source code(zip)
    arclet-alconna-0.4.1.tar.gz(11.56 KB)
    arclet-alconna-0.4.2.tar.gz(12.07 KB)
    arclet-alconna-0.4.3.tar.gz(12.54 KB)
  • v0.3(Dec 18, 2021)

    Alconna 0.3.1: 加入Args类、main_argument -> main_args, 砍掉了Default Alconna 0.3.2: 取消了pydantic的依赖,结构优化,加入Option的alias功能 Alconna 0.3.3: 修改Args内部构造、加入Pattern (仍向下兼容), 并为两个引入魔术方法;修改exception Alconna 0.3.4: 参数传入改进,代码审核改进

    Source code(tar.gz)
    Source code(zip)
    arclet-alconna-0.3.1.tar.gz(10.11 KB)
    arclet-alconna-0.3.2.tar.gz(10.00 KB)
    arclet-alconna-0.3.3.tar.gz(10.71 KB)
    arclet-alconna-0.3.4.tar.gz(11.47 KB)
  • v0.1(Dec 14, 2021)

多语言降噪预训练模型MBart的中文生成任务

mbart-chinese 基于mbart-large-cc25 的中文生成任务 Input source input: text + /s + lang_code target input: lang_code + text + /s Usage token_ids_mapping.jso

11 Sep 19, 2022
NLTK Source

Natural Language Toolkit (NLTK) NLTK -- the Natural Language Toolkit -- is a suite of open source Python modules, data sets, and tutorials supporting

Natural Language Toolkit 11.4k Jan 04, 2023
Search for documents in a domain through Google. The objective is to extract metadata

MetaFinder - Metadata search through Google _____ __ ___________ .__ .___ / \

Josué Encinar 85 Dec 16, 2022
MMDA - multimodal document analysis

MMDA - multimodal document analysis

AI2 75 Jan 04, 2023
QVHighlights: Detecting Moments and Highlights in Videos via Natural Language Queries

Moment-DETR QVHighlights: Detecting Moments and Highlights in Videos via Natural Language Queries Jie Lei, Tamara L. Berg, Mohit Bansal For dataset de

Jie Lei 雷杰 133 Dec 22, 2022
This code is the implementation of Text Emotion Recognition (TER) with linguistic features

APSIPA-TER This code is the implementation of Text Emotion Recognition (TER) with linguistic features. The network model is BERT with a pretrained mod

kenro515 1 Feb 08, 2022
Lyrics generation with GPT2-based Transformer

HuggingArtists - Train a model to generate lyrics Create AI-Artist in just 5 minutes! 🚀 Run the demo notebook to train 🚀 Run the GUI demo to test Di

Aleksey Korshuk 65 Dec 19, 2022
BPEmb is a collection of pre-trained subword embeddings in 275 languages, based on Byte-Pair Encoding (BPE) and trained on Wikipedia.

BPEmb is a collection of pre-trained subword embeddings in 275 languages, based on Byte-Pair Encoding (BPE) and trained on Wikipedia. Its intended use is as input for neural models in natural languag

Benjamin Heinzerling 1.1k Jan 03, 2023
Code for the ACL 2021 paper "Structural Guidance for Transformer Language Models"

Structural Guidance for Transformer Language Models This repository accompanies the paper, Structural Guidance for Transformer Language Models, publis

International Business Machines 10 Dec 14, 2022
Rhyme with AI

Local development Create a conda virtual environment and activate it: conda env create --file environment.yml conda activate rhyme-with-ai Install the

GoDataDriven 28 Nov 21, 2022
Code for the Python code smells video on the ArjanCodes channel.

7 Python code smells This repository contains the code for the Python code smells video on the ArjanCodes channel (watch the video here). The example

55 Dec 29, 2022
A deep learning-based translation library built on Huggingface transformers

DL Translate A deep learning-based translation library built on Huggingface transformers and Facebook's mBART-Large 💻 GitHub Repository 📚 Documentat

Xing Han Lu 244 Dec 30, 2022
DAGAN - Dual Attention GANs for Semantic Image Synthesis

Contents Semantic Image Synthesis with DAGAN Installation Dataset Preparation Generating Images Using Pretrained Model Train and Test New Models Evalu

Hao Tang 104 Oct 08, 2022
Learn meanings behind words is a key element in NLP. This project concentrates on the disambiguation of preposition senses. Therefore, we train a bert-transformer model and surpass the state-of-the-art.

New State-of-the-Art in Preposition Sense Disambiguation Supervisor: Prof. Dr. Alexander Mehler Alexander Henlein Institutions: Goethe University TTLa

Dirk Neuhäuser 4 Apr 06, 2022
An easy to use, user-friendly and efficient code for extracting OpenAI CLIP (Global/Grid) features from image and text respectively.

Extracting OpenAI CLIP (Global/Grid) Features from Image and Text This repo aims at providing an easy to use and efficient code for extracting image &

Jianjie(JJ) Luo 13 Jan 06, 2023
2021搜狐校园文本匹配算法大赛baseline

sohu2021-baseline 2021搜狐校园文本匹配算法大赛baseline 简介 分享了一个搜狐文本匹配的baseline,主要是通过条件LayerNorm来增加模型的多样性,以实现同一模型处理不同类型的数据、形成不同输出的目的。 线下验证集F1约0.74,线上测试集F1约0.73。

苏剑林(Jianlin Su) 45 Sep 06, 2022
Fine-tune GPT-3 with a Google Chat conversation history

Google Chat GPT-3 This repo will help you fine-tune GPT-3 with a Google Chat conversation history. The trained model will be able to converse as one o

Nate Baer 7 Dec 10, 2022
State of the art faster Natural Language Processing in Tensorflow 2.0 .

tf-transformers: faster and easier state-of-the-art NLP in TensorFlow 2.0 ****************************************************************************

74 Dec 05, 2022
Code for producing Japanese GPT-2 provided by rinna Co., Ltd.

japanese-gpt2 This repository provides the code for training Japanese GPT-2 models. This code has been used for producing japanese-gpt2-medium release

rinna Co.,Ltd. 491 Jan 07, 2023
Modular and extensible speech recognition library leveraging pytorch-lightning and hydra.

Lightning ASR Modular and extensible speech recognition library leveraging pytorch-lightning and hydra What is Lightning ASR • Installation • Get Star

Soohwan Kim 40 Sep 19, 2022