Skip to content

Commit

Permalink
🔀 sync for dev
Browse files Browse the repository at this point in the history
  • Loading branch information
RF-Tar-Railt committed Apr 23, 2024
1 parent d8d1fc5 commit 02a097d
Show file tree
Hide file tree
Showing 25 changed files with 466 additions and 269 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/auto-merge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
steps:
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@v1.6.0
uses: dependabot/fetch-metadata@v2.0.0
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
- name: Enable auto-merge for Dependabot PRs
Expand Down
53 changes: 53 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,58 @@
# 更新日志

## Alconna 1.8.10

### 改进

- 适配 `NEPattern` 0.7.0

## Alconna 1.8.9

### 修复

- 修复传入命令首个元素非字符串时能错误触发快捷指令的问题

## Alconna 1.8.8

### 修复

- 修复子命令在自身名称解析失败时其结果被错误存储的问题

## Alconna 1.8.7

### 改进

- 头部解析逻辑拆分

### 修复

- 修复 manager 更新命令时未使用 `Argv` 的 cache 问题

## Alconna 1.8.6

### 改进

- 帮助信息现在会显示命令的快捷指令

### 新增

- `Alconna.shortcut` 新增参数 `humanized`,用于指定快捷指令的可读性文本以供显示

```python
from arclet.alconna import Alconna, Args

alc = Alconna("test", Args["foo", int])
alc.shortcut("t(\d+)", command="test {0}", humanized="t[数字]")
```

- `CommandMeta` 新增属性 `hide_shortcut`, 用于在帮助信息里隐藏命令的快捷指令

## Alconna 1.8.5

### 修复

- 修复 `Alconna` 的 aliases (继承自subcommand的) 错误

## Alconna 1.8.4

### 新增
Expand Down
1 change: 1 addition & 0 deletions benchmark.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
argv.build(msg)
analyser.process(argv)
sec += time.perf_counter() - st
print(f"cost: {sec:.2f}s")
print(f"Alconna: {count / sec:.2f}msg/s")

print("RUN 2:")
Expand Down
6 changes: 3 additions & 3 deletions devtool.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

from arclet.alconna._internal._analyser import Analyser, default_compiler
from arclet.alconna._internal._handlers import analyse_args as ala
from arclet.alconna._internal._handlers import analyse_header as alh
from arclet.alconna._internal._handlers import HEAD_HANDLES
from arclet.alconna._internal._handlers import analyse_option as alo
from arclet.alconna._internal._header import Header
from arclet.alconna.args import Args
Expand Down Expand Up @@ -55,7 +55,7 @@ def analyse_args(
except Exception as e:
if raise_exception:
traceback.print_exception(AnalyseError, e, e.__traceback__)
return
return {}


def analyse_header(
Expand All @@ -74,7 +74,7 @@ def analyse_header(
try:
argv.enter(kwargs)
argv.build(command)
return alh(command_header, argv)
return HEAD_HANDLES[command_header.flag](command_header, argv)
except Exception as e:
if raise_exception:
traceback.print_exception(AnalyseError, e, e.__traceback__)
Expand Down
2 changes: 1 addition & 1 deletion example/exec_code.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
)

alc.shortcut(
"sin(\d+)",
r"sin(\d+)",
{"command": "exec --pure-text\nimport math\nprint(math.sin({0}*math.pi/180))"},
)

Expand Down
70 changes: 35 additions & 35 deletions pdm.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ authors = [
]
dependencies = [
"typing-extensions>=4.5.0",
"nepattern<1.0.0,>=0.6.4",
"nepattern<1.0.0,>=0.7.0",
"tarina>=0.4.4",
]
dynamic = ["version"]
Expand Down
1 change: 1 addition & 0 deletions src/arclet/alconna/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
from .config import config as config
from .config import namespace as namespace
from .core import Alconna as Alconna
from .exceptions import AlconnaException as AlconnaException
from .exceptions import InvalidArgs as InvalidArgs
from .exceptions import InvalidParam as InvalidParam
from .exceptions import NullMessage as NullMessage
Expand Down
8 changes: 6 additions & 2 deletions src/arclet/alconna/_internal/_analyser.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,10 @@
from ..output import output_manager
from ..typing import TDC, InnerShortcutArgs
from ._handlers import (
HEAD_HANDLES,
_handle_shortcut_data,
_handle_shortcut_reg,
analyse_args,
analyse_header,
analyse_param,
handle_completion,
handle_help,
Expand Down Expand Up @@ -171,6 +171,7 @@ def process(self, argv: Argv[TDC], trigger: str | None = None) -> Self:
if not trigger:
name, _ = argv.next(sub.separators)
if name not in sub.aliases:
argv.rollback(name)
if not argv.fuzzy_match:
raise InvalidParam(lang.require("subcommand", "name_error").format(source=sub.dest, target=name))
for al in sub.aliases:
Expand Down Expand Up @@ -224,6 +225,8 @@ class Analyser(SubAnalyser[TDC], Generic[TDC]):
"""命令实例"""
command_header: Header
"""命令头部"""
header_handler: Callable[[Header, Argv], HeadResult]
"""头部处理器"""

def __init__(self, alconna: Alconna[TDC], compiler: TCompile | None = None):
"""初始化解析器
Expand All @@ -238,6 +241,7 @@ def __init__(self, alconna: Alconna[TDC], compiler: TCompile | None = None):
def compile(self, param_ids: set[str]):
self.extra_allow = not self.command.meta.strict or not self.command.namespace_config.strict
self.command_header = Header.generate(self.command.command, self.command.prefixes, self.command.meta.compact)
self.header_handler = HEAD_HANDLES[self.command_header.flag]
self._compiler(self, param_ids)
return self

Expand Down Expand Up @@ -301,7 +305,7 @@ def process(self, argv: Argv[TDC], trigger=None) -> Arparma[TDC]:
ArgumentMissing: 参数缺失
"""
try:
self.header_result = analyse_header(self.command_header, argv)
self.header_result = self.header_handler(self.command_header, argv)
except InvalidParam as e:
_next = e.args[1]
if _next.__class__ is not str or not _next:
Expand Down
2 changes: 1 addition & 1 deletion src/arclet/alconna/_internal/_argv.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ def compile(self, meta: CommandMeta):
self.fuzzy_match = meta.fuzzy_match
self.fuzzy_threshold = meta.fuzzy_threshold
self.to_text = self.namespace.to_text
self.converter = self.namespace.converter
self.converter = self.namespace.converter or self.converter # type: ignore
self.filter_crlf = not meta.keep_crlf
self.context_style = meta.context_style
self.special = {}
Expand Down
Loading

0 comments on commit 02a097d

Please sign in to comment.