diff --git a/pyproject.toml b/pyproject.toml index 57f012b..e53cfa4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "nonebot_plugin_liteperm" -version = "0.0.2" +version = "0.1.0" description = "基于权限节点/权限组/特殊权限的Nonebot权限管理插件。" authors = [ { name = "JohnRichard4096", email = "windowserror@163.com" }, @@ -13,8 +13,9 @@ dependencies = [ "typing-extensions>=4.13.2", "tomli>=2.2.1", "tomli-w>=1.2.0", + "pydantic>=2.0.0", ] -requires-python = ">=3.10, <4.0" +requires-python = ">=3.10, <3.14" readme = "README.md" license = { text = "GPL-3.0-or-later" } keywords = ['nonebot'] diff --git a/src/nonebot_plugin_liteperm/API/node.py b/src/nonebot_plugin_liteperm/API/node.py index 8fadc2c..ae5e4b9 100644 --- a/src/nonebot_plugin_liteperm/API/node.py +++ b/src/nonebot_plugin_liteperm/API/node.py @@ -2,4 +2,4 @@ __all__ = [ "nodelib", -] \ No newline at end of file +] diff --git a/src/nonebot_plugin_liteperm/command_manager.py b/src/nonebot_plugin_liteperm/command_manager.py index 6764fd2..e027a49 100644 --- a/src/nonebot_plugin_liteperm/command_manager.py +++ b/src/nonebot_plugin_liteperm/command_manager.py @@ -1,6 +1,3 @@ from nonebot.plugin.on import CommandGroup -from nonebot.rule import to_me -command = CommandGroup( - ("lp", "LP", "LitePerm"), priority=10, block=True, rule=to_me(), prefix_aliases=True -) +command = CommandGroup(("lp"), priority=10, block=True, prefix_aliases=True) diff --git a/src/nonebot_plugin_liteperm/commands/cmd_utils.py b/src/nonebot_plugin_liteperm/commands/cmd_utils.py index 66428dd..0731dc5 100644 --- a/src/nonebot_plugin_liteperm/commands/cmd_utils.py +++ b/src/nonebot_plugin_liteperm/commands/cmd_utils.py @@ -10,15 +10,15 @@ async def parse_command( args_list = args.extract_plain_text().strip().split(maxsplit=5) # 参数校验 - if len(args_list) < 2: + if len(args_list) < 1: await matcher.finish("❌ 缺少ID") - if len(args_list) < 4: - await matcher.finish("❌ 参数不足,需要至少4个参数") + if len(args_list) < 3: + await matcher.finish("❌ 参数不足,需要至少3个参数") - user_id = args_list[1] - action_type = args_list[2] - operation = args_list[3] - target = args_list[4] if len(args_list) >= 5 else "" - value = args_list[5] if len(args_list) == 6 else "" + id = args_list[0] + action_type = args_list[1] + operation = args_list[2] + target = args_list[3] if len(args_list) >= 4 else "" + value = args_list[4] if len(args_list) == 5 else "" - return user_id, action_type, operation, target, value + return id, action_type, operation, target, value diff --git a/src/nonebot_plugin_liteperm/commands/lp_chat_group.py b/src/nonebot_plugin_liteperm/commands/lp_chat_group.py index f18c940..cfb371a 100644 --- a/src/nonebot_plugin_liteperm/commands/lp_chat_group.py +++ b/src/nonebot_plugin_liteperm/commands/lp_chat_group.py @@ -1,8 +1,9 @@ -from typing import Any, override +from typing import Any from nonebot.adapters.onebot.v11 import MessageEvent from nonebot.matcher import Matcher from nonebot.params import Depends +from typing_extensions import override from ..API.admin import is_lp_admin from ..command_manager import command @@ -15,24 +16,24 @@ class PermissionOperation(PermissionHandler): @override async def execute( - self, group_id: str, operation: str, node: str, value: str + self, id: str, operation: str, target: str, value: str ) -> tuple[str, dict[str, Any]]: - group_data = data_manager.get_group_data(group_id) + group_data = data_manager.get_group_data(id) group_perm = Permissions(group_data.permissions) msg_str = "" match operation: case "del": - group_perm.del_permission(node) - msg_str = f"✅ 已删除权限节点 {node}" + group_perm.del_permission(target) + msg_str = f"✅ 已删除权限节点 {target}" case "set": if value.lower() not in ("true", "false"): return "❌ 值必须是 true/false", group_data.model_dump() - group_perm.set_permission(node, value == "true", False) - msg_str = f"✅ 已设置 {node} : {value}" + group_perm.set_permission(target, value == "true", False) + msg_str = f"✅ 已设置 {target} : {value}" case "check": msg_str = ( "✅ 持有该权限" - if group_perm.check_permission(node) + if group_perm.check_permission(target) else "❌ 未持有该权限" ) case "list": @@ -45,23 +46,25 @@ async def execute( class ParentGroupHandler(PermissionHandler): @override async def execute( - self, group_id: str, operation: str, perm_group: str, _: str + self, id: str, operation: str, target: str, value: str ) -> tuple[str, dict[str, Any]]: - group_data = data_manager.get_group_data(group_id) - perm_perm_group_data = data_manager.get_permission_group_data(perm_group, False) - if perm_perm_group_data is None: + group_data = data_manager.get_group_data(id) + perm_target_data = data_manager.get_permission_group_data(target, False) + if perm_target_data is None: return "❌ 权限组不存在", group_data.model_dump() string_msg = "" - if not perm_perm_group_data: - string_msg = f"❌ 权限组 {perm_group} 不存在" + if not perm_target_data: + string_msg = f"❌ 权限组 {target} 不存在" match operation: case "add" | "del": - self._modify_inheritance(group_data, perm_perm_group_data, operation) - string_msg = f"✅ 已{'添加' if operation == 'add' else '移除'}继承组 {perm_group}" + self._modify_inheritance(group_data, perm_target_data, operation) + string_msg = ( + f"✅ 已{'添加' if operation == 'add' else '移除'}继承组 {target}" + ) case "set": - group_data.permissions = perm_perm_group_data.permissions.copy() - string_msg = f"✅ 已覆盖为组 {perm_group} 的权限" + group_data.permissions = perm_target_data.permissions.copy() + string_msg = f"✅ 已覆盖为组 {target} 的权限" case _: string_msg = "❌ 不支持的操作类型" return string_msg, group_data.model_dump() @@ -85,9 +88,9 @@ def _modify_inheritance( class PermissionGroupHandler(PermissionHandler): @override async def execute( - self, group_id: str, operation: str, target: str, value: str + self, id: str, operation: str, target: str, value: str ) -> tuple[str, dict[str, Any]]: - group_data = data_manager.get_group_data(group_id) + group_data = data_manager.get_group_data(id) msg_str = "" if operation == "add": if target not in group_data.permission_groups: @@ -117,21 +120,24 @@ def get_handler( # 运行进入点 -@command.command("group", permission=is_lp_admin).handle() +@command.command( + "chat_group", + permission=is_lp_admin, +).handle() async def lp_group( event: MessageEvent, matcher: Matcher, params: tuple[str, str, str, str, str] = Depends(parse_command), ): - group_id, action_type, operation, target, value = params + id, action_type, operation, target, value = params handler = get_handler(action_type) if handler is None: await matcher.finish("❌ 未知操作类型") try: - result, data = await handler.execute(group_id, operation, target, value) + result, data = await handler.execute(id, operation, target, value) except ValueError as e: result = f"❌ 操作失败:{e!s}" - finally: - data_manager.save_group_data(group_id, data) + else: + data_manager.save_group_data(id, data) await matcher.finish(result) diff --git a/src/nonebot_plugin_liteperm/commands/lp_perm_group.py b/src/nonebot_plugin_liteperm/commands/lp_perm_group.py index d81ce16..2745a56 100644 --- a/src/nonebot_plugin_liteperm/commands/lp_perm_group.py +++ b/src/nonebot_plugin_liteperm/commands/lp_perm_group.py @@ -1,8 +1,9 @@ -from typing import Any, override +from typing import Any from nonebot.adapters.onebot.v11 import MessageEvent from nonebot.matcher import Matcher from nonebot.params import Depends +from typing_extensions import override from ..API.admin import is_lp_admin from ..command_manager import command @@ -15,26 +16,26 @@ class PermissionOperation(PermissionHandler): @override async def execute( - self, group: str, operation: str, node: str, value: str + self, id: str, operation: str, target: str, value: str ) -> tuple[str, dict[str, Any]]: - permission_group_data = data_manager.get_permission_group_data(group, new=True) + permission_group_data = data_manager.get_permission_group_data(id, new=True) if permission_group_data is None: - return f"❌ 权限组{group}不存在", {} + return f"❌ 权限组{id}不存在", {} user_perm = Permissions(permission_group_data.permissions) msg_str = "" match operation: case "del": - user_perm.del_permission(node) - msg_str = f"✅ 已删除权限节点 {node}" + user_perm.del_permission(target) + msg_str = f"✅ 已删除权限节点 {target}" case "set": if value.lower() not in ("true", "false"): return "❌ 值必须是 true/false", permission_group_data.model_dump() - user_perm.set_permission(node, value == "true", False) - msg_str = f"✅ 已设置 {node} : {value}" + user_perm.set_permission(target, value == "true", False) + msg_str = f"✅ 已设置 {target} : {value}" case "check": msg_str = ( "✅ 持有该权限" - if user_perm.check_permission(node) + if user_perm.check_permission(target) else "❌ 未持有该权限" ) case "list": @@ -47,10 +48,10 @@ async def execute( class ParentGroupHandler(PermissionHandler): @override async def execute( - self, group: str, operation: str, target_group: str, _: str + self, id: str, operation: str, target: str, value: str ) -> tuple[str, dict[str, Any]]: - permission_group_data = data_manager.get_permission_group_data(group) - perm_group_data = data_manager.get_permission_group_data(target_group, False) + permission_group_data = data_manager.get_permission_group_data(id) + perm_group_data = data_manager.get_permission_group_data(target, False) if perm_group_data is None: return "❌ 权限组不存在", {} string_msg = "❌ 操作失败" @@ -62,10 +63,12 @@ async def execute( self._modify_inheritance( permission_group_data, perm_group_data, operation ) - string_msg = f"✅ 已{'添加' if operation == 'add' else '移除'}继承组 {target_group}" + string_msg = ( + f"✅ 已{'添加' if operation == 'add' else '移除'}继承组 {target}" + ) case "set": permission_group_data.permissions = perm_group_data.permissions.copy() - string_msg = f"✅ 已覆盖为组 {target_group} 的权限" + string_msg = f"✅ 已覆盖为组 {target} 的权限" case _: string_msg = "❌ 不支持的操作类型" return string_msg, permission_group_data.model_dump() @@ -85,35 +88,40 @@ def _modify_inheritance( elif operation == "del" and user_perms.check_permission(node): user_perms.del_permission(node) + class PermissionGroupHandler(PermissionHandler): async def execute( - self, group:str, operation: str, *_ + self, id: str, operation: str, target: str, value: str ) -> tuple[str, dict[str, Any]]: if operation == "create": - if data_manager.get_permission_group_data(group) is not None: + if data_manager.get_permission_group_data(id) is not None: return "❌ 权限组已存在", {} - data_manager.get_permission_group_data(group, True) + data_manager.get_permission_group_data(id, True) return "✅ 权限组创建成功", {} elif operation == "remove": - if data_manager.get_permission_group_data(group) is None: + if data_manager.get_permission_group_data(id) is None: return "❌ 权限组不存在", {} - data_manager.remove_permission_group(group) + data_manager.remove_permission_group(id) return "✅ 权限组删除成功", {} return "❌ 操作错误", {} + def get_handler( action_type: str, ) -> PermissionHandler | None: handlers = { "permission": PermissionOperation(), "parent": ParentGroupHandler(), - "to":PermissionGroupHandler(), + "to": PermissionGroupHandler(), } return handlers.get(action_type) # 运行进入点 -@command.command("user", permission=is_lp_admin).handle() +@command.command( + "perm_group", + permission=is_lp_admin, +).handle() async def lp_user( event: MessageEvent, matcher: Matcher, @@ -121,6 +129,7 @@ async def lp_user( ): user_id, action_type, operation, target, value = params handler = get_handler(action_type) + data = None if handler is None: await matcher.finish("❌ 未知操作类型") else: diff --git a/src/nonebot_plugin_liteperm/commands/lp_user.py b/src/nonebot_plugin_liteperm/commands/lp_user.py index b9e628c..87172c0 100644 --- a/src/nonebot_plugin_liteperm/commands/lp_user.py +++ b/src/nonebot_plugin_liteperm/commands/lp_user.py @@ -1,8 +1,9 @@ -from typing import Any, override +from typing import Any from nonebot.adapters.onebot.v11 import MessageEvent from nonebot.matcher import Matcher from nonebot.params import Depends +from typing_extensions import override from ..API.admin import is_lp_admin from ..command_manager import command @@ -15,24 +16,24 @@ class PermissionOperation(PermissionHandler): @override async def execute( - self, user_id: str, operation: str, node: str, value: str + self, id: str, operation: str, target: str, value: str ) -> tuple[str, dict[str, Any]]: - user_data = data_manager.get_user_data(user_id) + user_data = data_manager.get_user_data(id) user_perm = Permissions(user_data.permissions) msg_str = "" match operation: case "del": - user_perm.del_permission(node) - msg_str = f"✅ 已删除权限节点 {node}" + user_perm.del_permission(target) + msg_str = f"✅ 已删除权限节点 {target}" case "set": if value.lower() not in ("true", "false"): return "❌ 值必须是 true/false", user_data.model_dump() - user_perm.set_permission(node, value == "true", False) - msg_str = f"✅ 已设置 {node} : {value}" + user_perm.set_permission(target, value == "true", False) + msg_str = f"✅ 已设置 {target} : {value}" case "check": msg_str = ( "✅ 持有该权限" - if user_perm.check_permission(node) + if user_perm.check_permission(target) else "❌ 未持有该权限" ) case "list": @@ -45,25 +46,25 @@ async def execute( class ParentGroupHandler(PermissionHandler): @override async def execute( - self, user_id: str, operation: str, group: str, _: str + self, id: str, operation: str, target: str, value: str ) -> tuple[str, dict[str, Any]]: - user_data = data_manager.get_user_data(user_id) - perm_group_data = data_manager.get_permission_group_data(group, False) + user_data = data_manager.get_user_data(id) + perm_group_data = data_manager.get_permission_group_data(target, False) if perm_group_data is None: return "❌ 权限组不存在", user_data.model_dump() string_msg = "" if not perm_group_data: - string_msg = f"❌ 权限组 {group} 不存在" + string_msg = f"❌ 权限组 {target} 不存在" match operation: case "add" | "del": self._modify_inheritance(user_data, perm_group_data, operation) string_msg = ( - f"✅ 已{'添加' if operation == 'add' else '移除'}继承组 {group}" + f"✅ 已{'添加' if operation == 'add' else '移除'}继承组 {target}" ) case "set": user_data.permissions = perm_group_data.permissions.copy() - string_msg = f"✅ 已覆盖为组 {group} 的权限" + string_msg = f"✅ 已覆盖为组 {target} 的权限" case _: string_msg = "❌ 不支持的操作类型" return string_msg, user_data.model_dump() @@ -84,9 +85,9 @@ def _modify_inheritance( class PermissionGroupHandler(PermissionHandler): @override async def execute( - self, user_id: str, operation: str, target: str, value: str + self, id: str, operation: str, target: str, value: str ) -> tuple[str, dict[str, Any]]: - user_data = data_manager.get_user_data(user_id) + user_data = data_manager.get_user_data(id) msg_str = "" if operation == "add": if target not in user_data.permission_groups: @@ -116,7 +117,10 @@ def get_handler( # 运行进入点 -@command.command("user", permission=is_lp_admin).handle() +@command.command( + "user", + permission=is_lp_admin, +).handle() async def lp_user( event: MessageEvent, matcher: Matcher, @@ -130,7 +134,7 @@ async def lp_user( result, data = await handler.execute(user_id, operation, target, value) except ValueError as e: result = f"❌ 操作失败:{e!s}" - finally: + else: data_manager.save_user_data(user_id, data) await matcher.finish(result) diff --git a/src/nonebot_plugin_liteperm/commands/main.py b/src/nonebot_plugin_liteperm/commands/main.py index ea386a2..0bd1cac 100644 --- a/src/nonebot_plugin_liteperm/commands/main.py +++ b/src/nonebot_plugin_liteperm/commands/main.py @@ -3,19 +3,20 @@ from nonebot.adapters.onebot.v11 import Message, MessageEvent from nonebot.matcher import Matcher from nonebot.params import CommandArg -from nonebot.rule import to_me from ..command_manager import command class PermissionHandler(Protocol): async def execute( - self, user_id: str, operation: str, target: str, value: str + self, id: str, operation: str, target: str, value: str ) -> tuple[str, dict[str, Any]]: raise NotImplementedError("Not Implemented") -@command.command("", rule=to_me()).handle() +@command.command( + (), +).handle() async def lp(event: MessageEvent, matcher: Matcher, args: Message = CommandArg()): args_list = args.extract_plain_text().strip().split() if not args_list: diff --git a/src/nonebot_plugin_liteperm/config.py b/src/nonebot_plugin_liteperm/config.py index 2a7049d..b5cf7b6 100644 --- a/src/nonebot_plugin_liteperm/config.py +++ b/src/nonebot_plugin_liteperm/config.py @@ -37,16 +37,16 @@ class Config(BasicDataModel): def save_to_toml(self, path: Path): """保存配置到 TOML 文件""" - with path.open("wb") as f: - tomli_w.dump(self.model_dump(), f) + with path.open("w", encoding="utf-8") as f: + f.write(tomli_w.dumps(self.model_dump())) @classmethod def load_from_toml(cls, path: Path) -> "Config": """从 TOML 文件加载配置""" if not path.exists(): return cls() - with path.open("rb") as f: - data: dict[str, Any] = tomli.load(f) + with path.open("r", encoding="utf-8") as f: + data: dict[str, Any] = tomli.loads(f.read()) # 自动更新配置文件 current_config = cls().model_dump() updated_config = {**current_config, **data} @@ -89,13 +89,13 @@ def init(self): def save_user_data(self, user_id: str, data: dict[str, str | dict | bool]): UserData.model_validate(data) data_path = self.user_data_path / f"{user_id}.json" - with open(data_path, "w") as f: + with open(data_path, "w", encoding="utf-8") as f: json.dump(data, f) def save_group_data(self, group_name: str, data: dict[str, str | dict | bool]): GroupData.model_validate(data) data_path = self.group_data_path / f"{group_name}.json" - with open(data_path, "w") as f: + with open(data_path, "w", encoding="utf-8") as f: json.dump(data, f) def save_permission_group_data( @@ -103,17 +103,17 @@ def save_permission_group_data( ): PermissionGroupData.model_validate(data) data_path = self.permission_groups_path / f"{group_name}.json" - with open(data_path, "w") as f: + with open(data_path, "w", encoding="utf-8") as f: json.dump(data, f) def get_group_data(self, group_id: str): data_path = self.group_data_path / f"{group_id}.json" if not data_path.exists(): data = GroupData() - with open(data_path, "w") as f: + with open(data_path, "w", encoding="utf-8") as f: json.dump(data.model_dump(), f) return data - with open(data_path) as f: + with open(data_path, encoding="utf-8") as f: return GroupData(**json.load(f)) def get_permission_group_data( @@ -125,10 +125,10 @@ def get_permission_group_data( return None else: data = PermissionGroupData() - with open(data_path, "w") as f: + with open(data_path, "w", encoding="utf-8") as f: json.dump(data.model_dump(), f) return data - with open(data_path) as f: + with open(data_path, encoding="utf-8") as f: return PermissionGroupData(**json.load(f)) def remove_permission_group(self, group: str): @@ -140,10 +140,10 @@ def get_user_data(self, user_id: str): data_path = self.user_data_path / f"{user_id}.json" if not data_path.exists(): data = UserData() - with open(data_path, "w") as f: + with open(data_path, "w", encoding="utf-8") as f: json.dump(data.model_dump(), f) return data - with open(data_path) as f: + with open(data_path, encoding="utf-8") as f: return UserData(**json.load(f)) diff --git a/src/nonebot_plugin_liteperm/nodelib.py b/src/nonebot_plugin_liteperm/nodelib.py index b3cd1c9..3c7c172 100644 --- a/src/nonebot_plugin_liteperm/nodelib.py +++ b/src/nonebot_plugin_liteperm/nodelib.py @@ -6,7 +6,9 @@ class Permissions: permissions_data: dict[str, str | dict | bool] - def __init__(self, permissions_data: dict[str, str | dict | bool] | None = None) -> None: + def __init__( + self, permissions_data: dict[str, str | dict | bool] | None = None + ) -> None: if permissions_data is None: permissions_data = {} self.permissions_data = permissions_data @@ -95,15 +97,22 @@ def check_permission(self, node: str) -> bool: return current_node["has_permission"] if current_node else False def dump_to_file(self, filename: str): - with open(filename, "w") as f: + with open(filename, "w", encoding="utf-8") as f: json.dump(self.permissions_data, f, indent=4) self.__dump_to_str(overwrite=True) def load_from_json(self, filename: str): - with open(filename) as f: + with open(filename, encoding="utf-8") as f: self.permissions_data = json.load(f) self.__dump_to_str(overwrite=True) + def from_perm_str(self, perm_str: str): + for line in perm_str.split("\n"): + if line.strip() == "": + continue + node, permission = line.split(" ") + self.set_permission(node.strip(), permission.strip().lower() == "true") + def dump_data(self) -> dict[str, Any]: return self.permissions_data.copy() @@ -122,16 +131,17 @@ def perm_str(self) -> str: @property def permissions_str(self) -> str: + self.__dump_to_str(True) return self.__permissions_str -# 此处仅用于测试,理论上运行时不会触发。 +# 此处仅用于测试 if __name__ == "__main__": permissions = Permissions({}) permissions.set_permission("user.read", True) permissions.set_permission("user.write", True) permissions.set_permission("user.*", True) - permissions.set_permission("user", True) + permissions.set_permission("user", False) permissions.set_permission("children", True) permissions.set_permission("children.read", True) permissions.set_permission("children.children", True) diff --git a/src/nonebot_plugin_liteperm/on_init.py b/src/nonebot_plugin_liteperm/on_init.py index 2154c31..1b93592 100644 --- a/src/nonebot_plugin_liteperm/on_init.py +++ b/src/nonebot_plugin_liteperm/on_init.py @@ -13,7 +13,6 @@ @get_driver().on_startup async def load_config(): - version = "unknown" try: version = get_version("nonebot-plugin-liteperm") diff --git a/uv.lock b/uv.lock index aead199..4459645 100644 --- a/uv.lock +++ b/uv.lock @@ -1,10 +1,6 @@ version = 1 -revision = 1 -requires-python = ">=3.9, <4.0" -resolution-markers = [ - "python_full_version >= '3.10'", - "python_full_version < '3.10'", -] +revision = 3 +requires-python = ">=3.10, <4.0" [[package]] name = "annotated-types" @@ -120,17 +116,6 @@ wheels = [ { url = "https://mirrors.aliyun.com/pypi/packages/7a/40/631c238f1f338eb09f4acb0f34ab5862c4e9d7eda11c1b685471a4c5ea37/msgpack-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b4c01941fd2ff87c2a934ee6055bda4ed353a7846b8d4f341c428109e9fcde8c" }, { url = "https://mirrors.aliyun.com/pypi/packages/e9/1b/fa8a952be252a1555ed39f97c06778e3aeb9123aa4cccc0fd2acd0b4e315/msgpack-1.1.0-cp313-cp313-win32.whl", hash = "sha256:7c9a35ce2c2573bada929e0b7b3576de647b0defbd25f5139dcdaba0ae35a4cc" }, { url = "https://mirrors.aliyun.com/pypi/packages/b6/bc/8bd826dd03e022153bfa1766dcdec4976d6c818865ed54223d71f07862b3/msgpack-1.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:bce7d9e614a04d0883af0b3d4d501171fbfca038f12c77fa838d9f198147a23f" }, - { url = "https://mirrors.aliyun.com/pypi/packages/f7/3b/544a5c5886042b80e1f4847a4757af3430f60d106d8d43bb7be72c9e9650/msgpack-1.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:53258eeb7a80fc46f62fd59c876957a2d0e15e6449a9e71842b6d24419d88ca1" }, - { url = "https://mirrors.aliyun.com/pypi/packages/93/af/d63f25bcccd3d6f06fd518ba4a321f34a4370c67b579ca5c70b4a37721b4/msgpack-1.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7e7b853bbc44fb03fbdba34feb4bd414322180135e2cb5164f20ce1c9795ee48" }, - { url = "https://mirrors.aliyun.com/pypi/packages/92/9b/5c0dfb0009b9f96328664fecb9f8e4e9c8a1ae919e6d53986c1b813cb493/msgpack-1.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f3e9b4936df53b970513eac1758f3882c88658a220b58dcc1e39606dccaaf01c" }, - { url = "https://mirrors.aliyun.com/pypi/packages/d1/7c/3a9ee6ec9fc3e47681ad39b4d344ee04ff20a776b594fba92d88d8b68356/msgpack-1.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46c34e99110762a76e3911fc923222472c9d681f1094096ac4102c18319e6468" }, - { url = "https://mirrors.aliyun.com/pypi/packages/f7/0a/8a213cecea7b731c540f25212ba5f9a818f358237ac51a44d448bd753690/msgpack-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a706d1e74dd3dea05cb54580d9bd8b2880e9264856ce5068027eed09680aa74" }, - { url = "https://mirrors.aliyun.com/pypi/packages/1b/94/a82b0db0981e9586ed5af77d6cfb343da05d7437dceaae3b35d346498110/msgpack-1.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:534480ee5690ab3cbed89d4c8971a5c631b69a8c0883ecfea96c19118510c846" }, - { url = "https://mirrors.aliyun.com/pypi/packages/93/fc/6c7f0dcc1c913e14861e16eaf494c07fc1dde454ec726ff8cebcf348ae53/msgpack-1.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:8cf9e8c3a2153934a23ac160cc4cba0ec035f6867c8013cc6077a79823370346" }, - { url = "https://mirrors.aliyun.com/pypi/packages/1f/c6/e4a04c0089deace870dabcdef5c9f12798f958e2e81d5012501edaff342f/msgpack-1.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3180065ec2abbe13a4ad37688b61b99d7f9e012a535b930e0e683ad6bc30155b" }, - { url = "https://mirrors.aliyun.com/pypi/packages/b6/54/7d8317dac590cf16b3e08e3fb74d2081e5af44eb396f0effa13f17777f30/msgpack-1.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c5a91481a3cc573ac8c0d9aace09345d989dc4a0202b7fcb312c88c26d4e71a8" }, - { url = "https://mirrors.aliyun.com/pypi/packages/dc/6f/a5a1f43b6566831e9630e5bc5d86034a8884386297302be128402555dde1/msgpack-1.1.0-cp39-cp39-win32.whl", hash = "sha256:f80bc7d47f76089633763f952e67f8214cb7b3ee6bfa489b3cb6a84cfac114cd" }, - { url = "https://mirrors.aliyun.com/pypi/packages/5f/e8/2162621e18dbc36e2bc8492fd0e97b3975f5d89fe0472ae6d5f7fbdd8cf7/msgpack-1.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:4d1b7ff2d6146e16e8bd665ac726a89c74163ef8cd39fa8c1087d4e52d3a2325" }, ] [[package]] @@ -227,23 +212,6 @@ wheels = [ { url = "https://mirrors.aliyun.com/pypi/packages/e0/32/5c3a556118aca9981d883f38c4b1bfae646f3627157f70f4068e5a648955/multidict-6.4.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:64bc2bbc5fba7b9db5c2c8d750824f41c6994e3882e6d73c903c2afa78d091e4" }, { url = "https://mirrors.aliyun.com/pypi/packages/b9/3b/1599631f59024b75c4d6e3069f4502409970a336647502aaf6b62fb7ac98/multidict-6.4.3-cp313-cp313t-win32.whl", hash = "sha256:0ecdc12ea44bab2807d6b4a7e5eef25109ab1c82a8240d86d3c1fc9f3b72efd5" }, { url = "https://mirrors.aliyun.com/pypi/packages/e8/4e/09301668d675d02ca8e8e1a3e6be046619e30403f5ada2ed5b080ae28d02/multidict-6.4.3-cp313-cp313t-win_amd64.whl", hash = "sha256:7146a8742ea71b5d7d955bffcef58a9e6e04efba704b52a460134fefd10a8208" }, - { url = "https://mirrors.aliyun.com/pypi/packages/62/41/609ef2253da5d1686a85456b8315dec648a45a1d547074db225e94b3dd61/multidict-6.4.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5427a2679e95a642b7f8b0f761e660c845c8e6fe3141cddd6b62005bd133fc21" }, - { url = "https://mirrors.aliyun.com/pypi/packages/b5/4e/3a2daf9ccbdb503df7b91cbee240fccc96dd3287397b05ed59673b196cde/multidict-6.4.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:24a8caa26521b9ad09732972927d7b45b66453e6ebd91a3c6a46d811eeb7349b" }, - { url = "https://mirrors.aliyun.com/pypi/packages/04/f8/3a7ec724c51ad9c1534ebb0a60020e24c12b1fe4c60a4fdd0c97a3383cf4/multidict-6.4.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6b5a272bc7c36a2cd1b56ddc6bff02e9ce499f9f14ee4a45c45434ef083f2459" }, - { url = "https://mirrors.aliyun.com/pypi/packages/7f/c5/76c9a8cd657b3a44daf08f14faebb558b00fa22698f58ee7fa3876ade2e4/multidict-6.4.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edf74dc5e212b8c75165b435c43eb0d5e81b6b300a938a4eb82827119115e840" }, - { url = "https://mirrors.aliyun.com/pypi/packages/ac/b9/6ccb5bfc3747546e096f34c8b2ee91ccab0a92fefe7a9addc4ef9055ab4d/multidict-6.4.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:9f35de41aec4b323c71f54b0ca461ebf694fb48bec62f65221f52e0017955b39" }, - { url = "https://mirrors.aliyun.com/pypi/packages/0b/e9/95af61c79ffabb4a4331fe0736280ef30b324b67772fd018faf408d73f7d/multidict-6.4.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae93e0ff43b6f6892999af64097b18561691ffd835e21a8348a441e256592e1f" }, - { url = "https://mirrors.aliyun.com/pypi/packages/04/d2/bd7454b40e4d0f21771b2aa077c0e3f4dfb965f209ffce21112743cdadaa/multidict-6.4.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e3929269e9d7eff905d6971d8b8c85e7dbc72c18fb99c8eae6fe0a152f2e343" }, - { url = "https://mirrors.aliyun.com/pypi/packages/7a/f9/b50679179dd909ba28ce49dca551b40a8349aaed64beececd8ab64589b65/multidict-6.4.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb6214fe1750adc2a1b801a199d64b5a67671bf76ebf24c730b157846d0e90d2" }, - { url = "https://mirrors.aliyun.com/pypi/packages/8f/47/9b77c483a5183ed734d1272cbe685d7313922806d686c63748997374afc1/multidict-6.4.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6d79cf5c0c6284e90f72123f4a3e4add52d6c6ebb4a9054e88df15b8d08444c6" }, - { url = "https://mirrors.aliyun.com/pypi/packages/6e/b1/c621ed6098e81404098236a08f7be9274e364cdb0fed12de837030235d19/multidict-6.4.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2427370f4a255262928cd14533a70d9738dfacadb7563bc3b7f704cc2360fc4e" }, - { url = "https://mirrors.aliyun.com/pypi/packages/3a/9f/77f41726c1a3e5651e37c67aea5736645484834efd06795b2f8d38318890/multidict-6.4.3-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:fbd8d737867912b6c5f99f56782b8cb81f978a97b4437a1c476de90a3e41c9a1" }, - { url = "https://mirrors.aliyun.com/pypi/packages/00/66/eec0484c1de91439ce4e054f754f0ecb1c9d1a5fa09a1c12952fb3717ce9/multidict-6.4.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:0ee1bf613c448997f73fc4efb4ecebebb1c02268028dd4f11f011f02300cf1e8" }, - { url = "https://mirrors.aliyun.com/pypi/packages/95/58/a8f07841c6db4bdd8d1ae50cc8910cc63b5078b6dae3b196ec654d888060/multidict-6.4.3-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:578568c4ba5f2b8abd956baf8b23790dbfdc953e87d5b110bce343b4a54fc9e7" }, - { url = "https://mirrors.aliyun.com/pypi/packages/2a/a5/c50b9430fe79d4b04efda204f22450a23cb4ae895734940541141a858089/multidict-6.4.3-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:a059ad6b80de5b84b9fa02a39400319e62edd39d210b4e4f8c4f1243bdac4752" }, - { url = "https://mirrors.aliyun.com/pypi/packages/99/4c/2b69c52c4b1357d197c38a913fcf45b4200af79adfcdf96d88cb02d18f5b/multidict-6.4.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:dd53893675b729a965088aaadd6a1f326a72b83742b056c1065bdd2e2a42b4df" }, - { url = "https://mirrors.aliyun.com/pypi/packages/1b/39/63d9bd977aed6a053955b30aad38bbfe1f0f8d7462f80760b498387c91ee/multidict-6.4.3-cp39-cp39-win32.whl", hash = "sha256:abcfed2c4c139f25c2355e180bcc077a7cae91eefbb8b3927bb3f836c9586f1f" }, - { url = "https://mirrors.aliyun.com/pypi/packages/8f/d4/c6b8936fa9ff5e77fbba9ba431bc380ad0f8e6442a05c7fb6bfe35fdff60/multidict-6.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:b1b389ae17296dd739015d5ddb222ee99fd66adeae910de21ac950e00979d897" }, { url = "https://mirrors.aliyun.com/pypi/packages/96/10/7d526c8974f017f1e7ca584c71ee62a638e9334d8d33f27d7cdfc9ae79e4/multidict-6.4.3-py3-none-any.whl", hash = "sha256:59fe01ee8e2a1e8ceb3f6dbb216b09c8d9f4ef1c22c4fc825d045a147fa2ebc9" }, ] @@ -264,8 +232,8 @@ wheels = [ [[package]] name = "nonebot-plugin-liteperm" -version = "0.0.1" -source = { editable = "." } +version = "0.0.2" +source = { virtual = "." } dependencies = [ { name = "nonebot-adapter-onebot" }, { name = "nonebot-plugin-localstore" }, @@ -415,22 +383,6 @@ wheels = [ { url = "https://mirrors.aliyun.com/pypi/packages/4a/1f/ecd9ce27710021ae623631c0146719280a929d895a095f6d85efb6a0be2e/propcache-0.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:17d1c688a443355234f3c031349da69444be052613483f3e4158eef751abcd8a" }, { url = "https://mirrors.aliyun.com/pypi/packages/3e/66/2e90547d6b60180fb29e23dc87bd8c116517d4255240ec6d3f7dc23d1926/propcache-0.3.1-cp313-cp313t-win32.whl", hash = "sha256:359e81a949a7619802eb601d66d37072b79b79c2505e6d3fd8b945538411400d" }, { url = "https://mirrors.aliyun.com/pypi/packages/cb/8f/50ad8599399d1861b4d2b6b45271f0ef6af1b09b0a2386a46dbaf19c9535/propcache-0.3.1-cp313-cp313t-win_amd64.whl", hash = "sha256:e7fb9a84c9abbf2b2683fa3e7b0d7da4d8ecf139a1c635732a8bda29c5214b0e" }, - { url = "https://mirrors.aliyun.com/pypi/packages/aa/e1/4a782cdc7ebc42dfb44224dabf93b481395a0b6cbc9f0149785edbbab19c/propcache-0.3.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ed5f6d2edbf349bd8d630e81f474d33d6ae5d07760c44d33cd808e2f5c8f4ae6" }, - { url = "https://mirrors.aliyun.com/pypi/packages/18/c6/9a39b2646a71321815d8d616e890851af9fb327af7d1b9fdce7d2d8377ca/propcache-0.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:668ddddc9f3075af019f784456267eb504cb77c2c4bd46cc8402d723b4d200bf" }, - { url = "https://mirrors.aliyun.com/pypi/packages/f3/e2/88ad1c4c42861dd09b45924e468c42a1beb2c5267cb960b7a9f6af67dd04/propcache-0.3.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0c86e7ceea56376216eba345aa1fc6a8a6b27ac236181f840d1d7e6a1ea9ba5c" }, - { url = "https://mirrors.aliyun.com/pypi/packages/ae/7e/3e3b36854e96be2e881bc6e87293d59c74dd734dd038dd4981474be44e26/propcache-0.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83be47aa4e35b87c106fc0c84c0fc069d3f9b9b06d3c494cd404ec6747544894" }, - { url = "https://mirrors.aliyun.com/pypi/packages/11/1a/ac0f757cc0babdc8217056fca85150066cf43bf11db9651e6b7d8e0646d6/propcache-0.3.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:27c6ac6aa9fc7bc662f594ef380707494cb42c22786a558d95fcdedb9aa5d035" }, - { url = "https://mirrors.aliyun.com/pypi/packages/92/0a/0cf77d0e984b7058019ffa5385b3efd6962cbd5340a8f278ae103032863a/propcache-0.3.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:64a956dff37080b352c1c40b2966b09defb014347043e740d420ca1eb7c9b908" }, - { url = "https://mirrors.aliyun.com/pypi/packages/05/fc/cb52a0caf803caff9b95b0a99e7c9c87f15b7e34ba0feebfd2572b49013d/propcache-0.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82de5da8c8893056603ac2d6a89eb8b4df49abf1a7c19d536984c8dd63f481d5" }, - { url = "https://mirrors.aliyun.com/pypi/packages/e5/fc/b1d1fdffbe1e0278ab535f8d21fc6b030889417714a545755bdd5ebe9bb0/propcache-0.3.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c3c3a203c375b08fd06a20da3cf7aac293b834b6f4f4db71190e8422750cca5" }, - { url = "https://mirrors.aliyun.com/pypi/packages/23/a9/2a2f8d93d8f526c35dd8dbbc4a1ac22a106712cd821e15e2a6530aea8931/propcache-0.3.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:b303b194c2e6f171cfddf8b8ba30baefccf03d36a4d9cab7fd0bb68ba476a3d7" }, - { url = "https://mirrors.aliyun.com/pypi/packages/ef/71/5247a264b95e8d4ba86757cf9ad6a523d764bd4579a2d80007a2d4d2b0ad/propcache-0.3.1-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:916cd229b0150129d645ec51614d38129ee74c03293a9f3f17537be0029a9641" }, - { url = "https://mirrors.aliyun.com/pypi/packages/6f/4e/c8ec771731f1b1e7d07bd8875f1d13c1564b5d60f7483624d021eaef5687/propcache-0.3.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:a461959ead5b38e2581998700b26346b78cd98540b5524796c175722f18b0294" }, - { url = "https://mirrors.aliyun.com/pypi/packages/c5/b8/bdfcb1170a7b8504226064d7c0b4deb61acbcc6bb2e754ee25fb36c1b72a/propcache-0.3.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:069e7212890b0bcf9b2be0a03afb0c2d5161d91e1bf51569a64f629acc7defbf" }, - { url = "https://mirrors.aliyun.com/pypi/packages/72/c6/fdb9e8ba161a4e12c75a7415cb99314cad195d3b8ae9d770783cec54001e/propcache-0.3.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ef2e4e91fb3945769e14ce82ed53007195e616a63aa43b40fb7ebaaf907c8d4c" }, - { url = "https://mirrors.aliyun.com/pypi/packages/67/3f/0dd87220f61598b61b590a8b3562142ae475a9c0f694ee32bf97e4e41d44/propcache-0.3.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:8638f99dca15b9dff328fb6273e09f03d1c50d9b6512f3b65a4154588a7595fe" }, - { url = "https://mirrors.aliyun.com/pypi/packages/7b/4e/e332164372af66992c07b470448beb7e36ce7dba6a06c6c2b6131f112e74/propcache-0.3.1-cp39-cp39-win32.whl", hash = "sha256:6f173bbfe976105aaa890b712d1759de339d8a7cef2fc0a1714cc1a1e1c47f64" }, - { url = "https://mirrors.aliyun.com/pypi/packages/61/73/d64abb7bb5d18880ecfac152247c0f1a5807256ea21e4737ce3019afffeb/propcache-0.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:603f1fe4144420374f1a69b907494c3acbc867a581c2d49d4175b0de7cc64566" }, { url = "https://mirrors.aliyun.com/pypi/packages/b8/d3/c3cb8f1d6ae3b37f83e1de806713a9b3642c5895f0215a62e1a4bd6e5e34/propcache-0.3.1-py3-none-any.whl", hash = "sha256:9a8ecf38de50a7f518c21568c80f985e776397b902f1ce0b01f799aba1608b40" }, ] @@ -516,19 +468,6 @@ wheels = [ { url = "https://mirrors.aliyun.com/pypi/packages/ef/fd/24ea4302d7a527d672c5be06e17df16aabfb4e9fdc6e0b345c21580f3d2a/pydantic_core-2.33.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:401d7b76e1000d0dd5538e6381d28febdcacb097c8d340dde7d7fc6e13e9f95d" }, { url = "https://mirrors.aliyun.com/pypi/packages/5f/95/4fbc2ecdeb5c1c53f1175a32d870250194eb2fdf6291b795ab08c8646d5d/pydantic_core-2.33.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7aeb055a42d734c0255c9e489ac67e75397d59c6fbe60d155851e9782f276a9c" }, { url = "https://mirrors.aliyun.com/pypi/packages/71/ae/fe31e7f4a62431222d8f65a3bd02e3fa7e6026d154a00818e6d30520ea77/pydantic_core-2.33.1-cp313-cp313t-win_amd64.whl", hash = "sha256:338ea9b73e6e109f15ab439e62cb3b78aa752c7fd9536794112e14bee02c8d18" }, - { url = "https://mirrors.aliyun.com/pypi/packages/49/78/b86bad645cc3e8dfa6858c70ec38939bf350e54004837c48de09474b2b9e/pydantic_core-2.33.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5ab77f45d33d264de66e1884fca158bc920cb5e27fd0764a72f72f5756ae8bdb" }, - { url = "https://mirrors.aliyun.com/pypi/packages/3b/00/a02531331773b2bf08743d84c6b776bd6a449d23b3ae6b0e3229d568bac4/pydantic_core-2.33.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7aaba1b4b03aaea7bb59e1b5856d734be011d3e6d98f5bcaa98cb30f375f2ad" }, - { url = "https://mirrors.aliyun.com/pypi/packages/a1/fa/32cc152b84a1f420f8a7d80161373e8d87d4ffa077e67d6c8aab3ce1a6ab/pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7fb66263e9ba8fea2aa85e1e5578980d127fb37d7f2e292773e7bc3a38fb0c7b" }, - { url = "https://mirrors.aliyun.com/pypi/packages/5e/87/ea553e0d98bce6c4876f8c50f65cb45597eff6e0aaa8b15813e9972bb19d/pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3f2648b9262607a7fb41d782cc263b48032ff7a03a835581abbf7a3bec62bcf5" }, - { url = "https://mirrors.aliyun.com/pypi/packages/f7/9b/60cb9f4b52158b3adac0066492bbadd0b8473f4f8da5bcc73972655b76ef/pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:723c5630c4259400818b4ad096735a829074601805d07f8cafc366d95786d331" }, - { url = "https://mirrors.aliyun.com/pypi/packages/9b/38/374d254e270d4de0add68a8239f4ed0f444fdd7b766ea69244fb9491dccb/pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d100e3ae783d2167782391e0c1c7a20a31f55f8015f3293647544df3f9c67824" }, - { url = "https://mirrors.aliyun.com/pypi/packages/05/a8/fd79111eb5ab9bc4ef98d8fb0b3a2ffdc80107b2c59859a741ab379c96f8/pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:177d50460bc976a0369920b6c744d927b0ecb8606fb56858ff542560251b19e5" }, - { url = "https://mirrors.aliyun.com/pypi/packages/35/31/2e06619868eb4c18642c5601db420599c1cf9cf50fe868c9ac09cd298e24/pydantic_core-2.33.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a3edde68d1a1f9af1273b2fe798997b33f90308fb6d44d8550c89fc6a3647cf6" }, - { url = "https://mirrors.aliyun.com/pypi/packages/4a/d0/3531e8783a311802e3db7ee5a1a5ed79e5706e930b1b4e3109ce15eeb681/pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a62c3c3ef6a7e2c45f7853b10b5bc4ddefd6ee3cd31024754a1a5842da7d598d" }, - { url = "https://mirrors.aliyun.com/pypi/packages/ac/32/5ff252ed73bacd7677a706ab17723e261a76793f98b305aa20cfc10bbd56/pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:c91dbb0ab683fa0cd64a6e81907c8ff41d6497c346890e26b23de7ee55353f96" }, - { url = "https://mirrors.aliyun.com/pypi/packages/c9/f9/e96e00f92b8f5b3e2cddc80c5ee6cf038f8a0f238c44b67b01759943a7b4/pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9f466e8bf0a62dc43e068c12166281c2eca72121dd2adc1040f3aa1e21ef8599" }, - { url = "https://mirrors.aliyun.com/pypi/packages/54/1e/51c86688e809d94797fdf0efc41514f001caec982a05f62d90c180a9639d/pydantic_core-2.33.1-cp39-cp39-win32.whl", hash = "sha256:ab0277cedb698749caada82e5d099dc9fed3f906a30d4c382d1a21725777a1e5" }, - { url = "https://mirrors.aliyun.com/pypi/packages/57/18/c2da959fd8d019b70cadafdda2bf845378ada47973e0bad6cc84f56dbe6e/pydantic_core-2.33.1-cp39-cp39-win_amd64.whl", hash = "sha256:5773da0ee2d17136b1f1c6fbde543398d452a6ad2a7b54ea1033e2daa739b8d2" }, { url = "https://mirrors.aliyun.com/pypi/packages/9c/c7/8b311d5adb0fe00a93ee9b4e92a02b0ec08510e9838885ef781ccbb20604/pydantic_core-2.33.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c834f54f8f4640fd7e4b193f80eb25a0602bba9e19b3cd2fc7ffe8199f5ae02" }, { url = "https://mirrors.aliyun.com/pypi/packages/8a/d6/4f58d32066a9e26530daaf9adc6664b01875ae0691570094968aaa7b8fcc/pydantic_core-2.33.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:049e0de24cf23766f12cc5cc71d8abc07d4a9deb9061b334b62093dedc7cb068" }, { url = "https://mirrors.aliyun.com/pypi/packages/f7/3f/53cc9c45d9229da427909c751f8ed2bf422414f7664ea4dde2d004f596ba/pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a28239037b3d6f16916a4c831a5a0eadf856bdd6d2e92c10a0da3a59eadcf3e" }, @@ -547,15 +486,6 @@ wheels = [ { url = "https://mirrors.aliyun.com/pypi/packages/0b/cd/c59707e35a47ba4cbbf153c3f7c56420c58653b5801b055dc52cccc8e2dc/pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:52928d8c1b6bda03cc6d811e8923dffc87a2d3c8b3bfd2ce16471c7147a24850" }, { url = "https://mirrors.aliyun.com/pypi/packages/84/32/e4325a6676b0bed32d5b084566ec86ed7fd1e9bcbfc49c578b1755bde920/pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:1b30d92c9412beb5ac6b10a3eb7ef92ccb14e3f2a8d7732e2d739f58b3aa7544" }, { url = "https://mirrors.aliyun.com/pypi/packages/12/6f/5596dc418f2e292ffc661d21931ab34591952e2843e7168ea5a52591f6ff/pydantic_core-2.33.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:f995719707e0e29f0f41a8aa3bcea6e761a36c9136104d3189eafb83f5cec5e5" }, - { url = "https://mirrors.aliyun.com/pypi/packages/2d/a8/c2c8f29bd18f7ef52de32a6deb9e3ee87ba18b7b2122636aa9f4438cf627/pydantic_core-2.33.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7edbc454a29fc6aeae1e1eecba4f07b63b8d76e76a748532233c4c167b4cb9ea" }, - { url = "https://mirrors.aliyun.com/pypi/packages/08/ad/328081b1c82543ae49d0650048305058583c51f1a9a56a0d6e87bb3a2443/pydantic_core-2.33.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:ad05b683963f69a1d5d2c2bdab1274a31221ca737dbbceaa32bcb67359453cdd" }, - { url = "https://mirrors.aliyun.com/pypi/packages/6e/8a/bc65dbf7e501e88367cdab06a2c1340457c785f0c72288cae737fd80c0fa/pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df6a94bf9452c6da9b5d76ed229a5683d0306ccb91cca8e1eea883189780d568" }, - { url = "https://mirrors.aliyun.com/pypi/packages/9a/db/30ca6aefda211fb01ef185ca73cb7a0c6e7fe952c524025c8782b5acd771/pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7965c13b3967909a09ecc91f21d09cfc4576bf78140b988904e94f130f188396" }, - { url = "https://mirrors.aliyun.com/pypi/packages/f2/89/a12b55286e30c9f476eab7c53c9249ec76faf70430596496ab0309f28629/pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3f1fdb790440a34f6ecf7679e1863b825cb5ffde858a9197f851168ed08371e5" }, - { url = "https://mirrors.aliyun.com/pypi/packages/8e/55/12721c4a8d7951584ad3d9848b44442559cf1876e0bb424148d1060636b3/pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:5277aec8d879f8d05168fdd17ae811dd313b8ff894aeeaf7cd34ad28b4d77e33" }, - { url = "https://mirrors.aliyun.com/pypi/packages/bd/0c/3391bd5d6ff62ea998db94732528d9bc32c560b0ed861c39119759461946/pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8ab581d3530611897d863d1a649fb0644b860286b4718db919bfd51ece41f10b" }, - { url = "https://mirrors.aliyun.com/pypi/packages/d3/5f/3e4feb042998d7886a9b523b372d83955cbc192a07013dcd24276db078ee/pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0483847fa9ad5e3412265c1bd72aad35235512d9ce9d27d81a56d935ef489672" }, - { url = "https://mirrors.aliyun.com/pypi/packages/25/f2/1647933efaaad61846109a27619f3704929e758a09e6431b8f932a053d40/pydantic_core-2.33.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:de9e06abe3cc5ec6a2d5f75bc99b0bdca4f5c719a5b34026f8c57efbdecd2ee3" }, ] [[package]] @@ -742,22 +672,5 @@ wheels = [ { url = "https://mirrors.aliyun.com/pypi/packages/f7/ce/f5dc0439320dfe59fadab8cdd24ac324be19cf6ae4736422c7e2a510ddf3/yarl-1.19.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f408d4b4315e814e5c3668094e33d885f13c7809cbe831cbdc5b1bb8c7a448f4" }, { url = "https://mirrors.aliyun.com/pypi/packages/a9/4a/4833a134c76af987eff3ce8cb71e42932234120e6be061eb2555061e8844/yarl-1.19.0-cp313-cp313-win32.whl", hash = "sha256:24e4c367ad69988a2283dd45ea88172561ca24b2326b9781e164eb46eea68345" }, { url = "https://mirrors.aliyun.com/pypi/packages/32/e9/59327daab3af8f79221638a8f0d11474d20f6a8fbc41e9da80c5ef69e688/yarl-1.19.0-cp313-cp313-win_amd64.whl", hash = "sha256:0110f91c57ab43d1538dfa92d61c45e33b84df9257bd08fcfcda90cce931cbc9" }, - { url = "https://mirrors.aliyun.com/pypi/packages/f0/77/38ee2b6ea52fa46efb3a68c17d066760a2e873c99837001922dad3c5d4e5/yarl-1.19.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:85ac908cd5a97bbd3048cca9f1bf37b932ea26c3885099444f34b0bf5d5e9fa6" }, - { url = "https://mirrors.aliyun.com/pypi/packages/08/14/4c2f8696bf09d851d299e4af62bf005e6087f162cd34b8c88c332d8580ea/yarl-1.19.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6ba0931b559f1345df48a78521c31cfe356585670e8be22af84a33a39f7b9221" }, - { url = "https://mirrors.aliyun.com/pypi/packages/8d/b9/a67586d46e9c68ecae6162164539c50fdeab3f4722decda4f6ea9f7bf4fd/yarl-1.19.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5bc503e1c1fee1b86bcb58db67c032957a52cae39fe8ddd95441f414ffbab83e" }, - { url = "https://mirrors.aliyun.com/pypi/packages/76/01/2f3c33ef91f9292bb4bb59654fc5f6e0c24780de74cc993f583dec7c6adb/yarl-1.19.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d995122dcaf180fd4830a9aa425abddab7c0246107c21ecca2fa085611fa7ce9" }, - { url = "https://mirrors.aliyun.com/pypi/packages/43/fd/64e414ffba8f19e5d151c06e9402a0a0054f0c8f5d5e25519612d5d583ad/yarl-1.19.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:217f69e60a14da4eed454a030ea8283f8fbd01a7d6d81e57efb865856822489b" }, - { url = "https://mirrors.aliyun.com/pypi/packages/7a/84/813be2b6b8c4c5bdafa5e0c0e5b17213f45fd10efbfaaa1279a917201373/yarl-1.19.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aad67c8f13a4b79990082f72ef09c078a77de2b39899aabf3960a48069704973" }, - { url = "https://mirrors.aliyun.com/pypi/packages/4f/06/81f9a80e243e043f0dc6a043d1a89dc004b06e3f71fb7c83f9013959bb5b/yarl-1.19.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dff065a1a8ed051d7e641369ba1ad030d5a707afac54cf4ede7069b959898835" }, - { url = "https://mirrors.aliyun.com/pypi/packages/ec/8a/abbed688dd85b5a29e91ed9a7f4cce9efe925083d7567f341ece0b36cc7e/yarl-1.19.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ada882e26b16ee651ab6544ce956f2f4beaed38261238f67c2a96db748e17741" }, - { url = "https://mirrors.aliyun.com/pypi/packages/33/1a/7a6316473afec0b57e1cbf2ccaa02df9f138c0e447b43e85e8b1a4e7a549/yarl-1.19.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:67a56b1acc7093451ea2de0687aa3bd4e58d6b4ef6cbeeaad137b45203deaade" }, - { url = "https://mirrors.aliyun.com/pypi/packages/29/07/ba204b362147a04a5e172af726887156ae4e098fab826aa9d7269fbdbf89/yarl-1.19.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e97d2f0a06b39e231e59ebab0e6eec45c7683b339e8262299ac952707bdf7688" }, - { url = "https://mirrors.aliyun.com/pypi/packages/e1/43/555be0062c999a610ad2c7b5a78695f25a70890be8c3e9ae555386b20cd3/yarl-1.19.0-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:a5288adb7c59d0f54e4ad58d86fb06d4b26e08a59ed06d00a1aac978c0e32884" }, - { url = "https://mirrors.aliyun.com/pypi/packages/26/17/703f82dbac560b9a47cee7c83abad923ac98f062eda9430dab098c28a3c9/yarl-1.19.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1efbf4d03e6eddf5da27752e0b67a8e70599053436e9344d0969532baa99df53" }, - { url = "https://mirrors.aliyun.com/pypi/packages/e7/2c/a73354c4cc84e39a1eb83c1fabce01a75640a7fcf4183e5d3e99b1e510bd/yarl-1.19.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:f228f42f29cc87db67020f7d71624102b2c837686e55317b16e1d3ef2747a993" }, - { url = "https://mirrors.aliyun.com/pypi/packages/f2/b5/5213af4695344281637d65005b781151008446bbd852a4b6a1b47b6952fa/yarl-1.19.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:c515f7dd60ca724e4c62b34aeaa603188964abed2eb66bb8e220f7f104d5a187" }, - { url = "https://mirrors.aliyun.com/pypi/packages/d0/7d/00c56abbb3bec635dbe1f0ffb11f04eefc9ec2e1af24f10b34ed5d4e154d/yarl-1.19.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:4815ec6d3d68a96557fa71bd36661b45ac773fb50e5cfa31a7e843edb098f060" }, - { url = "https://mirrors.aliyun.com/pypi/packages/84/4f/37e5c9162af1a494f9854683869c67be271c5e66f75b0c7010c78a025356/yarl-1.19.0-cp39-cp39-win32.whl", hash = "sha256:9fac2dd1c5ecb921359d9546bc23a6dcc18c6acd50c6d96f118188d68010f497" }, - { url = "https://mirrors.aliyun.com/pypi/packages/55/7f/ef6a2a6d95671430364ec801286ed748cc9808bd747f038639158b5f308d/yarl-1.19.0-cp39-cp39-win_amd64.whl", hash = "sha256:5864f539ce86b935053bfa18205fa08ce38e9a40ea4d51b19ce923345f0ed5db" }, { url = "https://mirrors.aliyun.com/pypi/packages/a4/06/ae25a353e8f032322df6f30d6bb1fc329773ee48e1a80a2196ccb8d1206b/yarl-1.19.0-py3-none-any.whl", hash = "sha256:a727101eb27f66727576630d02985d8a065d09cd0b5fcbe38a5793f71b2a97ef" }, ]