From 3a3f2f882a27fc5ca02c3ee911e5319c24c21ad2 Mon Sep 17 00:00:00 2001 From: student_2333 Date: Thu, 30 Nov 2023 01:08:43 +0800 Subject: [PATCH 1/6] refactor project --- .gitignore | 4 +- README.md | 128 ++- nonebot_plugin_color/__init__.py | 54 +- nonebot_plugin_color/__main__.py | 83 ++ nonebot_plugin_color/color.ttf | Bin 30060 -> 0 bytes nonebot_plugin_color/config.py | 9 + nonebot_plugin_color/const.py | 92 ++ nonebot_plugin_color/data_source.py | 105 +- .../res/HarmonyOS_Sans_Bold.ttf | Bin 0 -> 145860 bytes pdm.lock | 983 ++++++++++++++++++ pyproject.toml | 47 +- res/screenshot.png | Bin 0 -> 27842 bytes screenshot.png | Bin 6076 -> 0 bytes setup.py | 30 - 14 files changed, 1372 insertions(+), 163 deletions(-) create mode 100644 nonebot_plugin_color/__main__.py delete mode 100644 nonebot_plugin_color/color.ttf create mode 100644 nonebot_plugin_color/config.py create mode 100644 nonebot_plugin_color/const.py create mode 100644 nonebot_plugin_color/res/HarmonyOS_Sans_Bold.ttf create mode 100644 pdm.lock create mode 100644 res/screenshot.png delete mode 100644 screenshot.png delete mode 100644 setup.py diff --git a/.gitignore b/.gitignore index eb1aee5..d75c442 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,4 @@ nonebot2-store-test.py - *__pycache__/ - -poetry.lock venv +build/ diff --git a/README.md b/README.md index c7d4021..a2e1340 100644 --- a/README.md +++ b/README.md @@ -1,71 +1,131 @@ -

Nonebot Plugin Color


+ +
-

🤖 用于生成指定色彩图片的 Nonebot2 插件


+ + NoneBotPluginLogo + +

+ NoneBotPluginText +

-

- - actions - - - license - - - pypi - - python
-


+# NoneBot-Plugin-Color +_✨ 用于生成指定色彩图片的 NoneBot2 插件 ✨_ -**安装方法** +python + + pdm-managed + + + wakatime + +
+ + + license + + + pypi + + + pypi download + + +
+ +## 💿 安装 + +以下提到的方法 任选**其一** 即可 + +
+[推荐] 使用 nb-cli 安装 +在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装 ```bash -# 从 PyPI 安装 -python3 -m pip install nonebot-plugin-color +nb plugin install nonebot-plugin-color ``` +
-
从 Git 安装
+
+使用包管理器安装 +在 nonebot2 项目的插件目录下, 打开命令行, 根据你使用的包管理器, 输入相应的安装命令 +
+pip ```bash -# 从 Git 安装 -git clone https://github.com/monsterxcn/nonebot-plugin-color.git -cd nonebot_plugin_color -cp -r nonebot_plugin_color /path/to/nonebot/plugins/ +pip install nonebot-plugin-color ``` +
+
+pdm + +```bash +pdm add nonebot-plugin-color +```
+
+poetry +```bash +poetry add nonebot-plugin-color +``` + +
+
+conda -重启 Bot 即可体验此插件。 +```bash +conda install nonebot-plugin-color +``` +
-**使用方法** +打开 nonebot2 项目根目录下的 `pyproject.toml` 文件, 在 `[tool.nonebot]` 部分的 `plugins` 项里追加写入 +```toml +[tool.nonebot] +plugins = [ + # ... + "nonebot_plugin_color" +] +``` -插件支持类似以下格式的命令,基于正则匹配: +
+## ⚙️ 配置 - - `#ABCD88` - - `123 234 33` - - `色图 #123456` - - `color#123456` +无 +## 🎉 使用 -
哎哟这个色啊!好色!
+插件基于 `pydantic` 的 `Color` 类解析颜色,详见 [这里](https://docs.pydantic.dev/1.10/usage/types/#color-type) +当发送符合其格式的消息时,Bot 将会回复你一张颜色图片 +也可以作为指令 `color` / `色图` 的参数来使用 -![色图来咯](screenshot.png) +例子: +- 颜色别名:`yellow` / `黄` / `黄色`(插件对中文颜色别名做了特殊处理,支持的名称列表见 [const.py](./nonebot_plugin_color/const.py)) +- 十六进制(HEX):`#ff0` / `#ff0f` / `#ffff00` / `#ffff00ff` +- CSS RGB / RGBA:`rgb(255, 255, 0)` / `rgba(255, 255, 255, 1)` +- CSS HSL:`hsl(60, 100%, 50%)` / `hsl(60, 100%, 50%, 1)` -
+
+哎哟这个色啊!好色! +![色图来咯](./res/screenshot.png) -**特别鸣谢** +
+## 💡 鸣谢 -[@nonebot/nonebot2](https://github.com/nonebot/nonebot2/) | [@Mrs4s/go-cqhttp](https://github.com/Mrs4s/go-cqhttp) +- [@nonebot/nonebot2](https://github.com/nonebot/nonebot2/) +- [@nonebot/plugin-alconna](https://github.com/nonebot/plugin-alconna) +- [@Mrs4s/go-cqhttp](https://github.com/Mrs4s/go-cqhttp) diff --git a/nonebot_plugin_color/__init__.py b/nonebot_plugin_color/__init__.py index 390905b..6f054ee 100644 --- a/nonebot_plugin_color/__init__.py +++ b/nonebot_plugin_color/__init__.py @@ -1,33 +1,29 @@ -from re import RegexFlag +from nonebot.plugin import PluginMetadata, inherit_supported_adapters, require -try: - from nonebot.adapters.onebot.v11 import Bot, MessageEvent, MessageSegment -except ImportError: - from nonebot.adapters.cqhttp import Bot, MessageSegment - from nonebot.adapters.cqhttp.event import MessageEvent +require("nonebot_plugin_alconna") -from nonebot import on_regex -from nonebot.typing import T_State +from . import __main__ as __main__ # noqa: E402 +from .config import ConfigModel # noqa: E402 -from .data_source import gnrtImg - -# zero2max = r"(25[0-5]|2[0-4][0-9]|[0-1]?[0-9]?[0-9])" -color = on_regex( - r"^(色图|color)?\s*((#[a-f0-9]{6})|((25[0-5]|2[0-4][0-9]|[0-1]?[0-9]?[0-9])\s+(25[0-5]|2[0-4][0-9]|[0-1]?[0-9]?[0-9])\s+(25[0-5]|2[0-4][0-9]|[0-1]?[0-9]?[0-9])))$", - flags=RegexFlag.IGNORECASE, block=True, priority=13 +__version__ = "0.2.0" +__plugin_meta__ = PluginMetadata( + name="色图生成", + description="用于生成指定色彩图片的 NoneBot2 插件", + usage=( + "插件基于 `pydantic` 的 `Color` 类解析颜色," + "当发送符合其格式的消息时,Bot 将会回复你一张颜色图片\n" + " \n" + "也可以作为指令 `color` / `色图` 的参数来使用\n" + " \n" + "例子:\n" + "- 颜色别名:`yellow` / `黄` / `黄色`(插件对中文颜色别名做了特殊处理)\n" + "- 十六进制(HEX):`#ff0` / `#ff0f` / `#ffff00` / `#ffff00ff`\n" + "- CSS RGB / RGBA:`rgb(255, 255, 0)` / `rgba(255, 255, 255, 1)`\n" + "- CSS HSL:`hsl(60, 100%, 50%)` / `hsl(60, 100%, 50%, 1)`" + ), + type="application", + homepage="https://github.com/monsterxcn/nonebot-plugin-color", + config=ConfigModel, + supported_adapters=inherit_supported_adapters("nonebot_plugin_alconna"), + extra={"License": "MIT", "Author": "student_2333"}, ) - - -@color.handle() -async def _(bot: Bot, event: MessageEvent, state: T_State): - if state["_matched_groups"][2]: - c = state["_matched_groups"][2] - elif state["_matched_groups"][3]: - c = state["_matched_groups"][4:7] - else: - await color.finish("奇怪的颜色增加了呢!") - res = await gnrtImg(c) - if res[0] == "b": # "base64://" - await color.finish(MessageSegment.image(res)) - else: - await color.finish(res) diff --git a/nonebot_plugin_color/__main__.py b/nonebot_plugin_color/__main__.py new file mode 100644 index 0000000..d96ba93 --- /dev/null +++ b/nonebot_plugin_color/__main__.py @@ -0,0 +1,83 @@ +from contextlib import suppress +from typing import Optional + +from nonebot import logger, on_command, on_message +from nonebot.adapters import Message as BaseMessage +from nonebot.matcher import Matcher +from nonebot.params import Depends, EventMessage +from nonebot.params import _command_arg as get_command_arg +from nonebot.typing import T_State +from nonebot_plugin_alconna.uniseg import Image, UniMessage +from nonebot_plugin_alconna.uniseg.segment import RawData +from pydantic.color import Color +from pydantic.errors import ColorError + +from .const import COLOR_CHINESE_NAME_MAP +from .data_source import generate_image + +KEY_COLOR = "color" +IMG_SIZE = 200 + + +def parse_color(color: str) -> Optional[Color]: + with suppress(ColorError): + return Color(color) + + # chinese name compatibility + if color.endswith("色"): + color = color[:-1] + if color in COLOR_CHINESE_NAME_MAP: + return Color(COLOR_CHINESE_NAME_MAP[color]) + + # old `r g b` format compatibility + with suppress(ValueError): + splitted = color.split() + if 3 <= len(splitted) <= 4: + return Color(splitted) # type: ignore + + return None + + +async def rule_color_msg(state: T_State, msg: BaseMessage = EventMessage()) -> bool: + if color := parse_color(msg.extract_plain_text().strip()): + state[KEY_COLOR] = color + return True + return False + + +async def dep_color(state: T_State) -> Optional[Color]: + if KEY_COLOR in state and (color := state[KEY_COLOR]): + return color + + with suppress(KeyError): + arg = get_command_arg(state).extract_plain_text().strip() + if color := parse_color(arg): + return color + + return None + + +cmd_color = on_command("color", aliases={"色图"}) +msg_color = on_message(rule=rule_color_msg, priority=5) + + +@cmd_color.handle() +@msg_color.handle() +async def handle_color( + matcher: Matcher, + color: Optional[Color] = Depends(dep_color, use_cache=False), +): + if not color: + await matcher.finish("奇怪的颜色增加了呢!") + + try: + image = await generate_image(color) + except Exception as e: + logger.exception("Error occurred while generating image") + await matcher.finish(f"不许色色!\n{type(e).__name__}: {e}") + + await matcher.finish( + await UniMessage( + Image(raw=RawData(data=image, mimetype="image/png")), + ).export(), + ) diff --git a/nonebot_plugin_color/color.ttf b/nonebot_plugin_color/color.ttf deleted file mode 100644 index eefefd566b40fc0afff70603685ece23f51e0e47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30060 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 str: - return "#%02X%02X%02X" % rgb +PADDING = 24 +IMG_SIZE = 256 +TITLE_FONT_SIZE = 48 +SUB_FONT_SIZE = 24 +HAS_ALPHA_SIZE_MULTIPLIER = 0.75 -def hex2rgb(hex: str) -> Tuple[int, int, int]: - hex = hex[1:] if hex[0] == "#" else hex - return tuple(int(hex[i:i+2], 16) for i in (0, 2, 4)) +def reverse_color(rgb: RGBColorTuple) -> RGBColorTuple: + return cast(RGBColorTuple, tuple(255 - i for i in rgb)) -# 相反色 Hex 值生成 -def compColorHex(rgb: Tuple[int, int, int]) -> str: - compRgb = tuple(255 - i for i in rgb) - return rgb2hex(compRgb) +def trans_pydantic_rgb(color: PyDanticColorTuple) -> RGBAColorTuple: + if len(color) == 4: + return (*color[:3], int(color[3] * 255)) + return (*color, 255) -# Pillow 绘制字体设置 -def font(size: int): - return ImageFont.truetype(font=fontPath, size=size) +async def generate_image(color: Color) -> BytesIO: + pydantic_color = color.as_rgb_tuple() + bg_color = trans_pydantic_rgb(pydantic_color) + rgb, alpha = bg_color[:3], bg_color[3] + font_name = str(FONT_PATH) + text_color = (*reverse_color(rgb), alpha) -# 图片转换为 Base64 编码 -def img2Base64(pic: Image.Image) -> str: - buf = BytesIO() - pic.save(buf, format="PNG", quality=100) - base64_str = b64encode(buf.getbuffer()).decode() - return "base64://" + base64_str + has_alpha = len(pydantic_color) == 4 + sub_size = SUB_FONT_SIZE + if has_alpha: + sub_size = round(sub_size * HAS_ALPHA_SIZE_MULTIPLIER) + build = partial(Text2Image.from_text, fill=text_color, fontname=font_name) + hex_text = build(color.as_hex(), TITLE_FONT_SIZE) + rgb_text = build(color.as_rgb(), sub_size) + hsl_text = build(color.as_hsl(), sub_size) -# 色图生成! -async def gnrtImg(color: Union[str, Tuple]) -> str: - try: - if isinstance(color, str): - cHex, cRGB = color.upper(), hex2rgb(color) - else: - color = tuple(int(i) for i in color) - cHex, cRGB = rgb2hex(color), color - txtColor = compColorHex(cRGB) - img = Image.new("RGB", (200, 200), cRGB) - draw = ImageDraw.Draw(img) - # 居中绘制 Hex 值 - hexCenter = font(32).getsize(cHex) - draw.text( - (int((200 - hexCenter[0]) / 2), 60), - cHex, font=font(32), fill=txtColor + gap_size = round( + ( + IMG_SIZE + - (PADDING * 2) + - sum(x.height for x in (hex_text, rgb_text, hsl_text)) ) - # 居中绘制 RGB 值 - rgbTxt = f"rgb({', '.join([str(i) for i in cRGB])})" - rgbCenter = font(16).getsize(rgbTxt) - draw.text( - (int((200 - rgbCenter[0]) / 2), 200 - 60 - rgbCenter[1]), - rgbTxt, font=font(16), fill=txtColor + / 4, + ) + + img = BuildImage.new("RGBA", (IMG_SIZE, IMG_SIZE), bg_color) + y_offset = PADDING + gap_size + for text in (hex_text, rgb_text, hsl_text): + text.draw_on_image( + img.image, + (round((IMG_SIZE - text.width) / 2), y_offset), ) - return img2Base64(img) - except Exception: - logger.warning(format_exc()) - return "不许色色!\n" + str(exc_info()[0]) + y_offset += text.height + gap_size + + return img.save_png() diff --git a/nonebot_plugin_color/res/HarmonyOS_Sans_Bold.ttf b/nonebot_plugin_color/res/HarmonyOS_Sans_Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8ea60c10b6cf32108b7acff6343f88f7889f815c GIT binary patch literal 145860 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 w85sDDhw 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.5.14", + "tarina>=0.4.1", + "typing-extensions>=4.5.0", +] +files = [ + {file = "arclet_alconna-1.7.38-py3-none-any.whl", hash = "sha256:e2248605bb7425c69a9cbe1e5f797d50945f30f054aaa9af73a237d8307d3432"}, + {file = "arclet_alconna-1.7.38.tar.gz", hash = "sha256:90af6498993e7bc21223259758a021d811329b341a9add7868b9497705af050b"}, +] + +[[package]] +name = "arclet-alconna-tools" +version = "0.6.8" +requires_python = ">=3.8" +summary = "Builtin Tools for Alconna" +dependencies = [ + "arclet-alconna>=1.7.33", + "nepattern>=0.5.15", +] +files = [ + {file = "arclet-alconna-tools-0.6.8.tar.gz", hash = "sha256:a36ddc9c311cae3e1d9df0d6b11eb8d69c57304bbca744dc2c9532e53093cc6f"}, + {file = "arclet_alconna_tools-0.6.8-py3-none-any.whl", hash = "sha256:eff5254e19b3fb24222164f419302f5f8849b8c14ddf8d96199747adc1916a13"}, +] + +[[package]] +name = "bbcode" +version = "1.1.0" +summary = "A pure python bbcode parser and formatter." +files = [ + {file = "bbcode-1.1.0-py2.py3-none-any.whl", hash = "sha256:83802f4b40c92426841a98350bd6ff9ea8fdf8f9b37df1968a88c5864fd225fa"}, + {file = "bbcode-1.1.0.tar.gz", hash = "sha256:eac4fb1d0f6c7ce5c41e4b5c0522562b15a1ac036fb9131adc59e9a28c7dc1d0"}, +] + +[[package]] +name = "colorama" +version = "0.4.6" +requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +summary = "Cross-platform colored terminal text." +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "contourpy" +version = "1.1.1" +requires_python = ">=3.8" +summary = "Python library for calculating contours of 2D quadrilateral grids" +dependencies = [ + "numpy<2.0,>=1.16; python_version <= \"3.11\"", + "numpy<2.0,>=1.26.0rc1; python_version >= \"3.12\"", +] +files = [ + {file = "contourpy-1.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:46e24f5412c948d81736509377e255f6040e94216bf1a9b5ea1eaa9d29f6ec1b"}, + {file = "contourpy-1.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e48694d6a9c5a26ee85b10130c77a011a4fedf50a7279fa0bdaf44bafb4299d"}, + {file = "contourpy-1.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a66045af6cf00e19d02191ab578a50cb93b2028c3eefed999793698e9ea768ae"}, + {file = "contourpy-1.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4ebf42695f75ee1a952f98ce9775c873e4971732a87334b099dde90b6af6a916"}, + {file = "contourpy-1.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f6aec19457617ef468ff091669cca01fa7ea557b12b59a7908b9474bb9674cf0"}, + {file = "contourpy-1.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:462c59914dc6d81e0b11f37e560b8a7c2dbab6aca4f38be31519d442d6cde1a1"}, + {file = "contourpy-1.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6d0a8efc258659edc5299f9ef32d8d81de8b53b45d67bf4bfa3067f31366764d"}, + {file = "contourpy-1.1.1-cp310-cp310-win32.whl", hash = "sha256:d6ab42f223e58b7dac1bb0af32194a7b9311065583cc75ff59dcf301afd8a431"}, + {file = "contourpy-1.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:549174b0713d49871c6dee90a4b499d3f12f5e5f69641cd23c50a4542e2ca1eb"}, + {file = "contourpy-1.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:407d864db716a067cc696d61fa1ef6637fedf03606e8417fe2aeed20a061e6b2"}, + {file = "contourpy-1.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe80c017973e6a4c367e037cb31601044dd55e6bfacd57370674867d15a899b"}, + {file = "contourpy-1.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e30aaf2b8a2bac57eb7e1650df1b3a4130e8d0c66fc2f861039d507a11760e1b"}, + {file = "contourpy-1.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3de23ca4f381c3770dee6d10ead6fff524d540c0f662e763ad1530bde5112532"}, + {file = "contourpy-1.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:566f0e41df06dfef2431defcfaa155f0acfa1ca4acbf8fd80895b1e7e2ada40e"}, + {file = "contourpy-1.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b04c2f0adaf255bf756cf08ebef1be132d3c7a06fe6f9877d55640c5e60c72c5"}, + {file = "contourpy-1.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d0c188ae66b772d9d61d43c6030500344c13e3f73a00d1dc241da896f379bb62"}, + {file = "contourpy-1.1.1-cp311-cp311-win32.whl", hash = "sha256:0683e1ae20dc038075d92e0e0148f09ffcefab120e57f6b4c9c0f477ec171f33"}, + {file = "contourpy-1.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:8636cd2fc5da0fb102a2504fa2c4bea3cbc149533b345d72cdf0e7a924decc45"}, + {file = "contourpy-1.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:560f1d68a33e89c62da5da4077ba98137a5e4d3a271b29f2f195d0fba2adcb6a"}, + {file = "contourpy-1.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:24216552104ae8f3b34120ef84825400b16eb6133af2e27a190fdc13529f023e"}, + {file = "contourpy-1.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56de98a2fb23025882a18b60c7f0ea2d2d70bbbcfcf878f9067234b1c4818442"}, + {file = "contourpy-1.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:07d6f11dfaf80a84c97f1a5ba50d129d9303c5b4206f776e94037332e298dda8"}, + {file = "contourpy-1.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1eaac5257a8f8a047248d60e8f9315c6cff58f7803971170d952555ef6344a7"}, + {file = "contourpy-1.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19557fa407e70f20bfaba7d55b4d97b14f9480856c4fb65812e8a05fe1c6f9bf"}, + {file = "contourpy-1.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:081f3c0880712e40effc5f4c3b08feca6d064cb8cfbb372ca548105b86fd6c3d"}, + {file = "contourpy-1.1.1-cp312-cp312-win32.whl", hash = "sha256:059c3d2a94b930f4dafe8105bcdc1b21de99b30b51b5bce74c753686de858cb6"}, + {file = "contourpy-1.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:f44d78b61740e4e8c71db1cf1fd56d9050a4747681c59ec1094750a658ceb970"}, + {file = "contourpy-1.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:70e5a10f8093d228bb2b552beeb318b8928b8a94763ef03b858ef3612b29395d"}, + {file = "contourpy-1.1.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8394e652925a18ef0091115e3cc191fef350ab6dc3cc417f06da66bf98071ae9"}, + {file = "contourpy-1.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5bd5680f844c3ff0008523a71949a3ff5e4953eb7701b28760805bc9bcff217"}, + {file = "contourpy-1.1.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:66544f853bfa85c0d07a68f6c648b2ec81dafd30f272565c37ab47a33b220684"}, + {file = "contourpy-1.1.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e0c02b75acfea5cab07585d25069207e478d12309557f90a61b5a3b4f77f46ce"}, + {file = "contourpy-1.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41339b24471c58dc1499e56783fedc1afa4bb018bcd035cfb0ee2ad2a7501ef8"}, + {file = "contourpy-1.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f29fb0b3f1217dfe9362ec55440d0743fe868497359f2cf93293f4b2701b8251"}, + {file = "contourpy-1.1.1-cp38-cp38-win32.whl", hash = "sha256:f9dc7f933975367251c1b34da882c4f0e0b2e24bb35dc906d2f598a40b72bfc7"}, + {file = "contourpy-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:498e53573e8b94b1caeb9e62d7c2d053c263ebb6aa259c81050766beb50ff8d9"}, + {file = "contourpy-1.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ba42e3810999a0ddd0439e6e5dbf6d034055cdc72b7c5c839f37a7c274cb4eba"}, + {file = "contourpy-1.1.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6c06e4c6e234fcc65435223c7b2a90f286b7f1b2733058bdf1345d218cc59e34"}, + {file = "contourpy-1.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca6fab080484e419528e98624fb5c4282148b847e3602dc8dbe0cb0669469887"}, + {file = "contourpy-1.1.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:93df44ab351119d14cd1e6b52a5063d3336f0754b72736cc63db59307dabb718"}, + {file = "contourpy-1.1.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eafbef886566dc1047d7b3d4b14db0d5b7deb99638d8e1be4e23a7c7ac59ff0f"}, + {file = "contourpy-1.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efe0fab26d598e1ec07d72cf03eaeeba8e42b4ecf6b9ccb5a356fde60ff08b85"}, + {file = "contourpy-1.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f08e469821a5e4751c97fcd34bcb586bc243c39c2e39321822060ba902eac49e"}, + {file = "contourpy-1.1.1-cp39-cp39-win32.whl", hash = "sha256:bfc8a5e9238232a45ebc5cb3bfee71f1167064c8d382cadd6076f0d51cff1da0"}, + {file = "contourpy-1.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:c84fdf3da00c2827d634de4fcf17e3e067490c4aea82833625c4c8e6cdea0887"}, + {file = "contourpy-1.1.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:229a25f68046c5cf8067d6d6351c8b99e40da11b04d8416bf8d2b1d75922521e"}, + {file = "contourpy-1.1.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a10dab5ea1bd4401c9483450b5b0ba5416be799bbd50fc7a6cc5e2a15e03e8a3"}, + {file = "contourpy-1.1.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:4f9147051cb8fdb29a51dc2482d792b3b23e50f8f57e3720ca2e3d438b7adf23"}, + {file = "contourpy-1.1.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a75cc163a5f4531a256f2c523bd80db509a49fc23721b36dd1ef2f60ff41c3cb"}, + {file = "contourpy-1.1.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b53d5769aa1f2d4ea407c65f2d1d08002952fac1d9e9d307aa2e1023554a163"}, + {file = "contourpy-1.1.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:11b836b7dbfb74e049c302bbf74b4b8f6cb9d0b6ca1bf86cfa8ba144aedadd9c"}, + {file = "contourpy-1.1.1.tar.gz", hash = "sha256:96ba37c2e24b7212a77da85004c38e7c4d155d3e72a45eeaf22c1f03f607e8ab"}, +] + +[[package]] +name = "cycler" +version = "0.12.1" +requires_python = ">=3.8" +summary = "Composable style cycles" +files = [ + {file = "cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30"}, + {file = "cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c"}, +] + +[[package]] +name = "fleep" +version = "1.0.1" +requires_python = ">=3.1" +summary = "File format determination library" +files = [ + {file = "fleep-1.0.1.tar.gz", hash = "sha256:c8f62b258ee5364d7f6c1ed1f3f278e99020fc3f0a60a24ad1e10846e31d104c"}, +] + +[[package]] +name = "fonttools" +version = "4.45.1" +requires_python = ">=3.8" +summary = "Tools to manipulate font files" +files = [ + {file = "fonttools-4.45.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:45fa321c458ea29224067700954ec44493ae869b47e7c5485a350a149a19fb53"}, + {file = "fonttools-4.45.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0dc7617d96b1e668eea9250e1c1fe62d0c78c3f69573ce7e3332cc40e6d84356"}, + {file = "fonttools-4.45.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03ed3bda541e86725f6b4e1b94213f13ed1ae51a5a1f167028534cedea38c010"}, + {file = "fonttools-4.45.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4f4a5870e3b56788fb196da8cf30d0dfd51a76dc3b907861d018165f76ae4c2"}, + {file = "fonttools-4.45.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a3c11d9687479f01eddef729aa737abcdea0a44fdaffb62a930a18892f186c9b"}, + {file = "fonttools-4.45.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:316cec50581e844c3ab69d7c82455b54c7cf18236b2f09e722faf665fbfcac58"}, + {file = "fonttools-4.45.1-cp310-cp310-win32.whl", hash = "sha256:e2277cba9f0b525e30de2a9ad3cb4219aa4bc697230c1645666b0deee9f914f0"}, + {file = "fonttools-4.45.1-cp310-cp310-win_amd64.whl", hash = "sha256:1b9e9ad2bcded9a1431afaa57c8d3c39143ac1f050862d66bddd863c515464a2"}, + {file = "fonttools-4.45.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ff6a698bdd435d24c379f6e8a54908cd9bb7dda23719084d56bf8c87709bf3bd"}, + {file = "fonttools-4.45.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c980d60cd6ec1376206fe55013d166e5627ad0b149b5c81e74eaa913ab6134f"}, + {file = "fonttools-4.45.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a12dee6523c02ca78aeedd0a5e12bfa9b7b29896350edd5241542897b072ae23"}, + {file = "fonttools-4.45.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37cd1ced6efb3dd6fe82e9f9bf92fd74ac58a5aefc284045f59ecd517a5fb9ab"}, + {file = "fonttools-4.45.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e3d24248221bd7151dfff0d88b1b5da02dccd7134bd576ce8888199827bbaa19"}, + {file = "fonttools-4.45.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ba6c23591427844dfb0a13658f1718489de75de6a46b64234584c0d17573162d"}, + {file = "fonttools-4.45.1-cp311-cp311-win32.whl", hash = "sha256:cebcddbe9351b67166292b4f71ffdbfcce01ba4b07d4267824eb46b277aeb19a"}, + {file = "fonttools-4.45.1-cp311-cp311-win_amd64.whl", hash = "sha256:f22eb69996a0bd49f76bdefb30be54ce8dbb89a0d1246874d610f05c2aa2e69e"}, + {file = "fonttools-4.45.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:794de93e83297db7b4943f2431e206d8b1ea69cb3ae14638a49cc50332bf0db8"}, + {file = "fonttools-4.45.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:4ba17822a6681d06849078daaf6e03eccc9f467efe7c4c60280e28a78e8e5df9"}, + {file = "fonttools-4.45.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e50f794d09df0675da8d9dbd7c66bfcab2f74a708343aabcad41936d26556891"}, + {file = "fonttools-4.45.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b07b857d4f9de3199a8c3d1b1bf2078c0f37447891ca1a8d9234106b9a27aff"}, + {file = "fonttools-4.45.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:777ba42b94a27bb7fb2b4082522fccfd345667c32a56011e1c3e105979af5b79"}, + {file = "fonttools-4.45.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:21e96b99878348c74aa58059b8578d7586f9519cbcdadacf56486737038aa043"}, + {file = "fonttools-4.45.1-cp312-cp312-win32.whl", hash = "sha256:5cbf02cda8465b69769d07385f5d11e7bba19954e7787792f46fe679ec755ebb"}, + {file = "fonttools-4.45.1-cp312-cp312-win_amd64.whl", hash = "sha256:800e354e0c3afaeb8d9552769773d02f228e98c37b8cb03041157c3d0687cffc"}, + {file = "fonttools-4.45.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6eb2c54f7a07c92108daabcf02caf31df97825738db02a28270633946bcda4d0"}, + {file = "fonttools-4.45.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:43a3d267334109ff849c37cf3629476b5feb392ef1d2e464a167b83de8cd599c"}, + {file = "fonttools-4.45.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e1aefc2bf3c43e0f33f995f828a7bbeff4adc9393a7760b11456dbcf14388f6"}, + {file = "fonttools-4.45.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f53a19dcdd5737440839b8394eeebb35da9ec8109f7926cb6456639b5b58e47"}, + {file = "fonttools-4.45.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5a17706b9cc24b27721613fe5773d93331ab7f0ecaca9955aead89c6b843d3a7"}, + {file = "fonttools-4.45.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fb36e5f40191274a95938b40c0a1fa7f895e36935aea8709e1d6deff0b2d0d4f"}, + {file = "fonttools-4.45.1-cp38-cp38-win32.whl", hash = "sha256:46eabddec12066829b8a1efe45ae552ba2f1796981ecf538d5f68284c354c589"}, + {file = "fonttools-4.45.1-cp38-cp38-win_amd64.whl", hash = "sha256:b6de2f0fcd3302fb82f94801002cb473959e998c14c24ec28234adb674aed345"}, + {file = "fonttools-4.45.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:392d0e3cc23daee910193625f7cf1b387aff9dd5b6f1a5f4a925680acb6dcbc2"}, + {file = "fonttools-4.45.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4b9544b1346d99848ac0e9b05b5d45ee703d7562fc4c9c48cf4b781de9632e57"}, + {file = "fonttools-4.45.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8717db3e4895e4820ade64ea379187738827ee60748223cb0438ef044ee208c6"}, + {file = "fonttools-4.45.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e29d5f298d616a93a4c5963682dc6cc8cc09f6d89cad2c29019fc5fb3b4d9472"}, + {file = "fonttools-4.45.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:cb472905da3049960e80fc1cf808231880d79727a8410e156bf3e5063a1c574f"}, + {file = "fonttools-4.45.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ba299f1fbaa2a1e33210aaaf6fa816d4059e4d3cfe2ae9871368d4ab548c1c6a"}, + {file = "fonttools-4.45.1-cp39-cp39-win32.whl", hash = "sha256:105099968b58a5b4cef6f3eb409db8ea8578b302a9d05e23fecba1b8b0177b5f"}, + {file = "fonttools-4.45.1-cp39-cp39-win_amd64.whl", hash = "sha256:847f3f49dd3423e5a678c098e2ba92c7f4955d4aab3044f6a507b0bb0ecb07e0"}, + {file = "fonttools-4.45.1-py3-none-any.whl", hash = "sha256:3bdd7dfca8f6c9f4779384064027e8477ad6a037d6a327b09381f43e0247c6f3"}, + {file = "fonttools-4.45.1.tar.gz", hash = "sha256:6e441286d55fe7ec7c4fb36812bf914924813776ff514b744b510680fc2733f2"}, +] + +[[package]] +name = "idna" +version = "3.6" +requires_python = ">=3.5" +summary = "Internationalized Domain Names in Applications (IDNA)" +files = [ + {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, + {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, +] + +[[package]] +name = "importlib-resources" +version = "6.1.1" +requires_python = ">=3.8" +summary = "Read resources from Python packages" +dependencies = [ + "zipp>=3.1.0; python_version < \"3.10\"", +] +files = [ + {file = "importlib_resources-6.1.1-py3-none-any.whl", hash = "sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6"}, + {file = "importlib_resources-6.1.1.tar.gz", hash = "sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a"}, +] + +[[package]] +name = "kiwisolver" +version = "1.4.5" +requires_python = ">=3.7" +summary = "A fast implementation of the Cassowary constraint solver" +files = [ + {file = "kiwisolver-1.4.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:05703cf211d585109fcd72207a31bb170a0f22144d68298dc5e61b3c946518af"}, + {file = "kiwisolver-1.4.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:146d14bebb7f1dc4d5fbf74f8a6cb15ac42baadee8912eb84ac0b3b2a3dc6ac3"}, + {file = "kiwisolver-1.4.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6ef7afcd2d281494c0a9101d5c571970708ad911d028137cd558f02b851c08b4"}, + {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9eaa8b117dc8337728e834b9c6e2611f10c79e38f65157c4c38e9400286f5cb1"}, + {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ec20916e7b4cbfb1f12380e46486ec4bcbaa91a9c448b97023fde0d5bbf9e4ff"}, + {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39b42c68602539407884cf70d6a480a469b93b81b7701378ba5e2328660c847a"}, + {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa12042de0171fad672b6c59df69106d20d5596e4f87b5e8f76df757a7c399aa"}, + {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2a40773c71d7ccdd3798f6489aaac9eee213d566850a9533f8d26332d626b82c"}, + {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:19df6e621f6d8b4b9c4d45f40a66839294ff2bb235e64d2178f7522d9170ac5b"}, + {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:83d78376d0d4fd884e2c114d0621624b73d2aba4e2788182d286309ebdeed770"}, + {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e391b1f0a8a5a10ab3b9bb6afcfd74f2175f24f8975fb87ecae700d1503cdee0"}, + {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:852542f9481f4a62dbb5dd99e8ab7aedfeb8fb6342349a181d4036877410f525"}, + {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59edc41b24031bc25108e210c0def6f6c2191210492a972d585a06ff246bb79b"}, + {file = "kiwisolver-1.4.5-cp310-cp310-win32.whl", hash = "sha256:a6aa6315319a052b4ee378aa171959c898a6183f15c1e541821c5c59beaa0238"}, + {file = "kiwisolver-1.4.5-cp310-cp310-win_amd64.whl", hash = "sha256:d0ef46024e6a3d79c01ff13801cb19d0cad7fd859b15037aec74315540acc276"}, + {file = "kiwisolver-1.4.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:11863aa14a51fd6ec28688d76f1735f8f69ab1fabf388851a595d0721af042f5"}, + {file = "kiwisolver-1.4.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8ab3919a9997ab7ef2fbbed0cc99bb28d3c13e6d4b1ad36e97e482558a91be90"}, + {file = "kiwisolver-1.4.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fcc700eadbbccbf6bc1bcb9dbe0786b4b1cb91ca0dcda336eef5c2beed37b797"}, + {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dfdd7c0b105af050eb3d64997809dc21da247cf44e63dc73ff0fd20b96be55a9"}, + {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76c6a5964640638cdeaa0c359382e5703e9293030fe730018ca06bc2010c4437"}, + {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bbea0db94288e29afcc4c28afbf3a7ccaf2d7e027489c449cf7e8f83c6346eb9"}, + {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ceec1a6bc6cab1d6ff5d06592a91a692f90ec7505d6463a88a52cc0eb58545da"}, + {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:040c1aebeda72197ef477a906782b5ab0d387642e93bda547336b8957c61022e"}, + {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f91de7223d4c7b793867797bacd1ee53bfe7359bd70d27b7b58a04efbb9436c8"}, + {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:faae4860798c31530dd184046a900e652c95513796ef51a12bc086710c2eec4d"}, + {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:b0157420efcb803e71d1b28e2c287518b8808b7cf1ab8af36718fd0a2c453eb0"}, + {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:06f54715b7737c2fecdbf140d1afb11a33d59508a47bf11bb38ecf21dc9ab79f"}, + {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fdb7adb641a0d13bdcd4ef48e062363d8a9ad4a182ac7647ec88f695e719ae9f"}, + {file = "kiwisolver-1.4.5-cp311-cp311-win32.whl", hash = "sha256:bb86433b1cfe686da83ce32a9d3a8dd308e85c76b60896d58f082136f10bffac"}, + {file = "kiwisolver-1.4.5-cp311-cp311-win_amd64.whl", hash = "sha256:6c08e1312a9cf1074d17b17728d3dfce2a5125b2d791527f33ffbe805200a355"}, + {file = "kiwisolver-1.4.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:32d5cf40c4f7c7b3ca500f8985eb3fb3a7dfc023215e876f207956b5ea26632a"}, + {file = "kiwisolver-1.4.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f846c260f483d1fd217fe5ed7c173fb109efa6b1fc8381c8b7552c5781756192"}, + {file = "kiwisolver-1.4.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5ff5cf3571589b6d13bfbfd6bcd7a3f659e42f96b5fd1c4830c4cf21d4f5ef45"}, + {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7269d9e5f1084a653d575c7ec012ff57f0c042258bf5db0954bf551c158466e7"}, + {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da802a19d6e15dffe4b0c24b38b3af68e6c1a68e6e1d8f30148c83864f3881db"}, + {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3aba7311af82e335dd1e36ffff68aaca609ca6290c2cb6d821a39aa075d8e3ff"}, + {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:763773d53f07244148ccac5b084da5adb90bfaee39c197554f01b286cf869228"}, + {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2270953c0d8cdab5d422bee7d2007f043473f9d2999631c86a223c9db56cbd16"}, + {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d099e745a512f7e3bbe7249ca835f4d357c586d78d79ae8f1dcd4d8adeb9bda9"}, + {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:74db36e14a7d1ce0986fa104f7d5637aea5c82ca6326ed0ec5694280942d1162"}, + {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:7e5bab140c309cb3a6ce373a9e71eb7e4873c70c2dda01df6820474f9889d6d4"}, + {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:0f114aa76dc1b8f636d077979c0ac22e7cd8f3493abbab152f20eb8d3cda71f3"}, + {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:88a2df29d4724b9237fc0c6eaf2a1adae0cdc0b3e9f4d8e7dc54b16812d2d81a"}, + {file = "kiwisolver-1.4.5-cp312-cp312-win32.whl", hash = "sha256:72d40b33e834371fd330fb1472ca19d9b8327acb79a5821d4008391db8e29f20"}, + {file = "kiwisolver-1.4.5-cp312-cp312-win_amd64.whl", hash = "sha256:2c5674c4e74d939b9d91dda0fae10597ac7521768fec9e399c70a1f27e2ea2d9"}, + {file = "kiwisolver-1.4.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:11c7de8f692fc99816e8ac50d1d1aef4f75126eefc33ac79aac02c099fd3db71"}, + {file = "kiwisolver-1.4.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:53abb58632235cd154176ced1ae8f0d29a6657aa1aa9decf50b899b755bc2b93"}, + {file = "kiwisolver-1.4.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:88b9f257ca61b838b6f8094a62418421f87ac2a1069f7e896c36a7d86b5d4c29"}, + {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3195782b26fc03aa9c6913d5bad5aeb864bdc372924c093b0f1cebad603dd712"}, + {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc579bf0f502e54926519451b920e875f433aceb4624a3646b3252b5caa9e0b6"}, + {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a580c91d686376f0f7c295357595c5a026e6cbc3d77b7c36e290201e7c11ecb"}, + {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cfe6ab8da05c01ba6fbea630377b5da2cd9bcbc6338510116b01c1bc939a2c18"}, + {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:d2e5a98f0ec99beb3c10e13b387f8db39106d53993f498b295f0c914328b1333"}, + {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a51a263952b1429e429ff236d2f5a21c5125437861baeed77f5e1cc2d2c7c6da"}, + {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3edd2fa14e68c9be82c5b16689e8d63d89fe927e56debd6e1dbce7a26a17f81b"}, + {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:74d1b44c6cfc897df648cc9fdaa09bc3e7679926e6f96df05775d4fb3946571c"}, + {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:76d9289ed3f7501012e05abb8358bbb129149dbd173f1f57a1bf1c22d19ab7cc"}, + {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:92dea1ffe3714fa8eb6a314d2b3c773208d865a0e0d35e713ec54eea08a66250"}, + {file = "kiwisolver-1.4.5-cp38-cp38-win32.whl", hash = "sha256:5c90ae8c8d32e472be041e76f9d2f2dbff4d0b0be8bd4041770eddb18cf49a4e"}, + {file = "kiwisolver-1.4.5-cp38-cp38-win_amd64.whl", hash = "sha256:c7940c1dc63eb37a67721b10d703247552416f719c4188c54e04334321351ced"}, + {file = "kiwisolver-1.4.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9407b6a5f0d675e8a827ad8742e1d6b49d9c1a1da5d952a67d50ef5f4170b18d"}, + {file = "kiwisolver-1.4.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:15568384086b6df3c65353820a4473575dbad192e35010f622c6ce3eebd57af9"}, + {file = "kiwisolver-1.4.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0dc9db8e79f0036e8173c466d21ef18e1befc02de8bf8aa8dc0813a6dc8a7046"}, + {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:cdc8a402aaee9a798b50d8b827d7ecf75edc5fb35ea0f91f213ff927c15f4ff0"}, + {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6c3bd3cde54cafb87d74d8db50b909705c62b17c2099b8f2e25b461882e544ff"}, + {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:955e8513d07a283056b1396e9a57ceddbd272d9252c14f154d450d227606eb54"}, + {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:346f5343b9e3f00b8db8ba359350eb124b98c99efd0b408728ac6ebf38173958"}, + {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9098e0049e88c6a24ff64545cdfc50807818ba6c1b739cae221bbbcbc58aad3"}, + {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:00bd361b903dc4bbf4eb165f24d1acbee754fce22ded24c3d56eec268658a5cf"}, + {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7b8b454bac16428b22560d0a1cf0a09875339cab69df61d7805bf48919415901"}, + {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:f1d072c2eb0ad60d4c183f3fb44ac6f73fb7a8f16a2694a91f988275cbf352f9"}, + {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:31a82d498054cac9f6d0b53d02bb85811185bcb477d4b60144f915f3b3126342"}, + {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6512cb89e334e4700febbffaaa52761b65b4f5a3cf33f960213d5656cea36a77"}, + {file = "kiwisolver-1.4.5-cp39-cp39-win32.whl", hash = "sha256:9db8ea4c388fdb0f780fe91346fd438657ea602d58348753d9fb265ce1bca67f"}, + {file = "kiwisolver-1.4.5-cp39-cp39-win_amd64.whl", hash = "sha256:59415f46a37f7f2efeec758353dd2eae1b07640d8ca0f0c42548ec4125492635"}, + {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5c7b3b3a728dc6faf3fc372ef24f21d1e3cee2ac3e9596691d746e5a536de920"}, + {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:620ced262a86244e2be10a676b646f29c34537d0d9cc8eb26c08f53d98013390"}, + {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:378a214a1e3bbf5ac4a8708304318b4f890da88c9e6a07699c4ae7174c09a68d"}, + {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaf7be1207676ac608a50cd08f102f6742dbfc70e8d60c4db1c6897f62f71523"}, + {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ba55dce0a9b8ff59495ddd050a0225d58bd0983d09f87cfe2b6aec4f2c1234e4"}, + {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:fd32ea360bcbb92d28933fc05ed09bffcb1704ba3fc7942e81db0fd4f81a7892"}, + {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5e7139af55d1688f8b960ee9ad5adafc4ac17c1c473fe07133ac092310d76544"}, + {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dced8146011d2bc2e883f9bd68618b8247387f4bbec46d7392b3c3b032640126"}, + {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9bf3325c47b11b2e51bca0824ea217c7cd84491d8ac4eefd1e409705ef092bd"}, + {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5794cf59533bc3f1b1c821f7206a3617999db9fbefc345360aafe2e067514929"}, + {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e368f200bbc2e4f905b8e71eb38b3c04333bddaa6a2464a6355487b02bb7fb09"}, + {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5d706eba36b4c4d5bc6c6377bb6568098765e990cfc21ee16d13963fab7b3e7"}, + {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85267bd1aa8880a9c88a8cb71e18d3d64d2751a790e6ca6c27b8ccc724bcd5ad"}, + {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:210ef2c3a1f03272649aff1ef992df2e724748918c4bc2d5a90352849eb40bea"}, + {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:11d011a7574eb3b82bcc9c1a1d35c1d7075677fdd15de527d91b46bd35e935ee"}, + {file = "kiwisolver-1.4.5.tar.gz", hash = "sha256:e57e563a57fb22a142da34f38acc2fc1a5c864bc29ca1517a88abc963e60d6ec"}, +] + +[[package]] +name = "loguru" +version = "0.7.2" +requires_python = ">=3.5" +summary = "Python logging made (stupidly) simple" +dependencies = [ + "colorama>=0.3.4; sys_platform == \"win32\"", + "win32-setctime>=1.0.0; sys_platform == \"win32\"", +] +files = [ + {file = "loguru-0.7.2-py3-none-any.whl", hash = "sha256:003d71e3d3ed35f0f8984898359d65b79e5b21943f78af86aa5491210429b8eb"}, + {file = "loguru-0.7.2.tar.gz", hash = "sha256:e671a53522515f34fd406340ee968cb9ecafbc4b36c679da03c18fd8d0bd51ac"}, +] + +[[package]] +name = "matplotlib" +version = "3.7.4" +requires_python = ">=3.8" +summary = "Python plotting package" +dependencies = [ + "contourpy>=1.0.1", + "cycler>=0.10", + "fonttools>=4.22.0", + "importlib-resources>=3.2.0; python_version < \"3.10\"", + "kiwisolver>=1.0.1", + "numpy<2,>=1.20", + "packaging>=20.0", + "pillow>=6.2.0", + "pyparsing>=2.3.1", + "python-dateutil>=2.7", +] +files = [ + {file = "matplotlib-3.7.4-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:b71079239bd866bf56df023e5146de159cb0c7294e508830901f4d79e2d89385"}, + {file = "matplotlib-3.7.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:bf91a42f6274a64cb41189120b620c02e574535ff6671fa836cade7701b06fbd"}, + {file = "matplotlib-3.7.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f757e8b42841d6add0cb69b42497667f0d25a404dcd50bd923ec9904e38414c4"}, + {file = "matplotlib-3.7.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4dfee00aa4bd291e08bb9461831c26ce0da85ca9781bb8794f2025c6e925281"}, + {file = "matplotlib-3.7.4-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3640f33632beb3993b698b1be9d1c262b742761d6101f3c27b87b2185d25c875"}, + {file = "matplotlib-3.7.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff539c4a17ecdf076ed808ee271ffae4a30dcb7e157b99ccae2c837262c07db6"}, + {file = "matplotlib-3.7.4-cp310-cp310-win32.whl", hash = "sha256:24b8f28af3e766195c09b780b15aa9f6710192b415ae7866b9c03dee7ec86370"}, + {file = "matplotlib-3.7.4-cp310-cp310-win_amd64.whl", hash = "sha256:3fa193286712c3b6c3cfa5fe8a6bb563f8c52cc750006c782296e0807ce5e799"}, + {file = "matplotlib-3.7.4-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:b167f54cb4654b210c9624ec7b54e2b3b8de68c93a14668937e7e53df60770ec"}, + {file = "matplotlib-3.7.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:7dfe6821f1944cb35603ff22e21510941bbcce7ccf96095beffaac890d39ce77"}, + {file = "matplotlib-3.7.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3c557d9165320dff3c5f2bb99bfa0b6813d3e626423ff71c40d6bc23b83c3339"}, + {file = "matplotlib-3.7.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08372696b3bb45c563472a552a705bfa0942f0a8ffe084db8a4e8f9153fbdf9d"}, + {file = "matplotlib-3.7.4-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:81e1a7ac818000e8ac3ca696c3fdc501bc2d3adc89005e7b4e22ee5e9d51de98"}, + {file = "matplotlib-3.7.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:390920a3949906bc4b0216198d378f2a640c36c622e3584dd0c79a7c59ae9f50"}, + {file = "matplotlib-3.7.4-cp311-cp311-win32.whl", hash = "sha256:62e094d8da26294634da9e7f1856beee3978752b1b530c8e1763d2faed60cc10"}, + {file = "matplotlib-3.7.4-cp311-cp311-win_amd64.whl", hash = "sha256:f8fc2df756105784e650605e024d36dc2d048d68e5c1b26df97ee25d1bd41f9f"}, + {file = "matplotlib-3.7.4-cp312-cp312-macosx_10_12_universal2.whl", hash = "sha256:568574756127791903604e315c11aef9f255151e4cfe20ec603a70f9dda8e259"}, + {file = "matplotlib-3.7.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:7d479aac338195e2199a8cfc03c4f2f55914e6a120177edae79e0340a6406457"}, + {file = "matplotlib-3.7.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:32183d4be84189a4c52b4b8861434d427d9118db2cec32986f98ed6c02dcfbb6"}, + {file = "matplotlib-3.7.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0037d066cca1f4bda626c507cddeb6f7da8283bc6a214da2db13ff2162933c52"}, + {file = "matplotlib-3.7.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44856632ebce88abd8efdc0a0dceec600418dcac06b72ae77af0019d260aa243"}, + {file = "matplotlib-3.7.4-cp312-cp312-win_amd64.whl", hash = "sha256:632fc938c22117d4241411191cfb88ac264a4c0a9ac702244641ddf30f0d739c"}, + {file = "matplotlib-3.7.4-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:ce163be048613b9d1962273708cc97e09ca05d37312e670d166cf332b80bbaff"}, + {file = "matplotlib-3.7.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:e680f49bb8052ba3b2698e370155d2b4afb49f9af1cc611a26579d5981e2852a"}, + {file = "matplotlib-3.7.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0604880e4327114054199108b7390f987f4f40ee5ce728985836889e11a780ba"}, + {file = "matplotlib-3.7.4-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1e6abcde6fc52475f9d6a12b9f1792aee171ce7818ef6df5d61cb0b82816e6e8"}, + {file = "matplotlib-3.7.4-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f59a70e2ec3212033ef6633ed07682da03f5249379722512a3a2a26a7d9a738e"}, + {file = "matplotlib-3.7.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a9981b2a2dd9da06eca4ab5855d09b54b8ce7377c3e0e3957767b83219d652d"}, + {file = "matplotlib-3.7.4-cp38-cp38-win32.whl", hash = "sha256:83859ac26839660ecd164ee8311272074250b915ac300f9b2eccc84410f8953b"}, + {file = "matplotlib-3.7.4-cp38-cp38-win_amd64.whl", hash = "sha256:7a7709796ac59fe8debde68272388be6ed449c8971362eb5b60d280eac8dadde"}, + {file = "matplotlib-3.7.4-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:b1d70bc1ea1bf110bec64f4578de3e14947909a8887df4c1fd44492eca487955"}, + {file = "matplotlib-3.7.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c83f49e795a5de6c168876eea723f5b88355202f9603c55977f5356213aa8280"}, + {file = "matplotlib-3.7.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5c9133f230945fe10652eb33e43642e933896194ef6a4f8d5e79bb722bdb2000"}, + {file = "matplotlib-3.7.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:798ff59022eeb276380ce9a73ba35d13c3d1499ab9b73d194fd07f1b0a41c304"}, + {file = "matplotlib-3.7.4-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1707b20b25e90538c2ce8d4409e30f0ef1df4017cc65ad0439633492a973635b"}, + {file = "matplotlib-3.7.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e6227ca8492baeef873cdd8e169a318efb5c3a25ce94e69727e7f964995b0b1"}, + {file = "matplotlib-3.7.4-cp39-cp39-win32.whl", hash = "sha256:5661c8639aded7d1bbf781373a359011cb1dd09199dee49043e9e68dd16f07ba"}, + {file = "matplotlib-3.7.4-cp39-cp39-win_amd64.whl", hash = "sha256:55eec941a4743f0bd3e5b8ee180e36b7ea8e62f867bf2613937c9f01b9ac06a2"}, + {file = "matplotlib-3.7.4-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ab16868714e5cc90ec8f7ff5d83d23bcd6559224d8e9cb5227c9f58748889fe8"}, + {file = "matplotlib-3.7.4-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c698b33f9a3f0b127a8e614c8fb4087563bb3caa9c9d95298722fa2400cdd3f"}, + {file = "matplotlib-3.7.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be3493bbcb4d255cb71de1f9050ac71682fce21a56089eadbcc8e21784cb12ee"}, + {file = "matplotlib-3.7.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:f8c725d1dd2901b2e7ec6cd64165e00da2978cc23d4143cb9ef745bec88e6b04"}, + {file = "matplotlib-3.7.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:286332f8f45f8ffde2d2119b9fdd42153dccd5025fa9f451b4a3b5c086e26da5"}, + {file = "matplotlib-3.7.4-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:116ef0b43aa00ff69260b4cce39c571e4b8c6f893795b708303fa27d9b9d7548"}, + {file = "matplotlib-3.7.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c90590d4b46458677d80bc3218f3f1ac11fc122baa9134e0cb5b3e8fc3714052"}, + {file = "matplotlib-3.7.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:de7c07069687be64fd9d119da3122ba13a8d399eccd3f844815f0dc78a870b2c"}, + {file = "matplotlib-3.7.4.tar.gz", hash = "sha256:7cd4fef8187d1dd0d9dcfdbaa06ac326d396fb8c71c647129f0bf56835d77026"}, +] + +[[package]] +name = "multidict" +version = "6.0.4" +requires_python = ">=3.7" +summary = "multidict implementation" +files = [ + {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b1a97283e0c85772d613878028fec909f003993e1007eafa715b24b377cb9b8"}, + {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:eeb6dcc05e911516ae3d1f207d4b0520d07f54484c49dfc294d6e7d63b734171"}, + {file = "multidict-6.0.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d6d635d5209b82a3492508cf5b365f3446afb65ae7ebd755e70e18f287b0adf7"}, + {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c048099e4c9e9d615545e2001d3d8a4380bd403e1a0578734e0d31703d1b0c0b"}, + {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ea20853c6dbbb53ed34cb4d080382169b6f4554d394015f1bef35e881bf83547"}, + {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16d232d4e5396c2efbbf4f6d4df89bfa905eb0d4dc5b3549d872ab898451f569"}, + {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36c63aaa167f6c6b04ef2c85704e93af16c11d20de1d133e39de6a0e84582a93"}, + {file = "multidict-6.0.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:64bdf1086b6043bf519869678f5f2757f473dee970d7abf6da91ec00acb9cb98"}, + {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:43644e38f42e3af682690876cff722d301ac585c5b9e1eacc013b7a3f7b696a0"}, + {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7582a1d1030e15422262de9f58711774e02fa80df0d1578995c76214f6954988"}, + {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:ddff9c4e225a63a5afab9dd15590432c22e8057e1a9a13d28ed128ecf047bbdc"}, + {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ee2a1ece51b9b9e7752e742cfb661d2a29e7bcdba2d27e66e28a99f1890e4fa0"}, + {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a2e4369eb3d47d2034032a26c7a80fcb21a2cb22e1173d761a162f11e562caa5"}, + {file = "multidict-6.0.4-cp310-cp310-win32.whl", hash = "sha256:574b7eae1ab267e5f8285f0fe881f17efe4b98c39a40858247720935b893bba8"}, + {file = "multidict-6.0.4-cp310-cp310-win_amd64.whl", hash = "sha256:4dcbb0906e38440fa3e325df2359ac6cb043df8e58c965bb45f4e406ecb162cc"}, + {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0dfad7a5a1e39c53ed00d2dd0c2e36aed4650936dc18fd9a1826a5ae1cad6f03"}, + {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:64da238a09d6039e3bd39bb3aee9c21a5e34f28bfa5aa22518581f910ff94af3"}, + {file = "multidict-6.0.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ff959bee35038c4624250473988b24f846cbeb2c6639de3602c073f10410ceba"}, + {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01a3a55bd90018c9c080fbb0b9f4891db37d148a0a18722b42f94694f8b6d4c9"}, + {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c5cb09abb18c1ea940fb99360ea0396f34d46566f157122c92dfa069d3e0e982"}, + {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:666daae833559deb2d609afa4490b85830ab0dfca811a98b70a205621a6109fe"}, + {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11bdf3f5e1518b24530b8241529d2050014c884cf18b6fc69c0c2b30ca248710"}, + {file = "multidict-6.0.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d18748f2d30f94f498e852c67d61261c643b349b9d2a581131725595c45ec6c"}, + {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:458f37be2d9e4c95e2d8866a851663cbc76e865b78395090786f6cd9b3bbf4f4"}, + {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:b1a2eeedcead3a41694130495593a559a668f382eee0727352b9a41e1c45759a"}, + {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7d6ae9d593ef8641544d6263c7fa6408cc90370c8cb2bbb65f8d43e5b0351d9c"}, + {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:5979b5632c3e3534e42ca6ff856bb24b2e3071b37861c2c727ce220d80eee9ed"}, + {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dcfe792765fab89c365123c81046ad4103fcabbc4f56d1c1997e6715e8015461"}, + {file = "multidict-6.0.4-cp311-cp311-win32.whl", hash = "sha256:3601a3cece3819534b11d4efc1eb76047488fddd0c85a3948099d5da4d504636"}, + {file = "multidict-6.0.4-cp311-cp311-win_amd64.whl", hash = "sha256:81a4f0b34bd92df3da93315c6a59034df95866014ac08535fc819f043bfd51f0"}, + {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5fc1b16f586f049820c5c5b17bb4ee7583092fa0d1c4e28b5239181ff9532e0c"}, + {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1502e24330eb681bdaa3eb70d6358e818e8e8f908a22a1851dfd4e15bc2f8161"}, + {file = "multidict-6.0.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b692f419760c0e65d060959df05f2a531945af31fda0c8a3b3195d4efd06de11"}, + {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45e1ecb0379bfaab5eef059f50115b54571acfbe422a14f668fc8c27ba410e7e"}, + {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ddd3915998d93fbcd2566ddf9cf62cdb35c9e093075f862935573d265cf8f65d"}, + {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:59d43b61c59d82f2effb39a93c48b845efe23a3852d201ed2d24ba830d0b4cf2"}, + {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc8e1d0c705233c5dd0c5e6460fbad7827d5d36f310a0fadfd45cc3029762258"}, + {file = "multidict-6.0.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6aa0418fcc838522256761b3415822626f866758ee0bc6632c9486b179d0b52"}, + {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6748717bb10339c4760c1e63da040f5f29f5ed6e59d76daee30305894069a660"}, + {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4d1a3d7ef5e96b1c9e92f973e43aa5e5b96c659c9bc3124acbbd81b0b9c8a951"}, + {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4372381634485bec7e46718edc71528024fcdc6f835baefe517b34a33c731d60"}, + {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:fc35cb4676846ef752816d5be2193a1e8367b4c1397b74a565a9d0389c433a1d"}, + {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4b9d9e4e2b37daddb5c23ea33a3417901fa7c7b3dee2d855f63ee67a0b21e5b1"}, + {file = "multidict-6.0.4-cp38-cp38-win32.whl", hash = "sha256:e41b7e2b59679edfa309e8db64fdf22399eec4b0b24694e1b2104fb789207779"}, + {file = "multidict-6.0.4-cp38-cp38-win_amd64.whl", hash = "sha256:d6c254ba6e45d8e72739281ebc46ea5eb5f101234f3ce171f0e9f5cc86991480"}, + {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:16ab77bbeb596e14212e7bab8429f24c1579234a3a462105cda4a66904998664"}, + {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc779e9e6f7fda81b3f9aa58e3a6091d49ad528b11ed19f6621408806204ad35"}, + {file = "multidict-6.0.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ceef517eca3e03c1cceb22030a3e39cb399ac86bff4e426d4fc6ae49052cc60"}, + {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:281af09f488903fde97923c7744bb001a9b23b039a909460d0f14edc7bf59706"}, + {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:52f2dffc8acaba9a2f27174c41c9e57f60b907bb9f096b36b1a1f3be71c6284d"}, + {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b41156839806aecb3641f3208c0dafd3ac7775b9c4c422d82ee2a45c34ba81ca"}, + {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3fc56f88cc98ef8139255cf8cd63eb2c586531e43310ff859d6bb3a6b51f1"}, + {file = "multidict-6.0.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8316a77808c501004802f9beebde51c9f857054a0c871bd6da8280e718444449"}, + {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f70b98cd94886b49d91170ef23ec5c0e8ebb6f242d734ed7ed677b24d50c82cf"}, + {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bf6774e60d67a9efe02b3616fee22441d86fab4c6d335f9d2051d19d90a40063"}, + {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:e69924bfcdda39b722ef4d9aa762b2dd38e4632b3641b1d9a57ca9cd18f2f83a"}, + {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:6b181d8c23da913d4ff585afd1155a0e1194c0b50c54fcfe286f70cdaf2b7176"}, + {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:52509b5be062d9eafc8170e53026fbc54cf3b32759a23d07fd935fb04fc22d95"}, + {file = "multidict-6.0.4-cp39-cp39-win32.whl", hash = "sha256:27c523fbfbdfd19c6867af7346332b62b586eed663887392cff78d614f9ec313"}, + {file = "multidict-6.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:33029f5734336aa0d4c0384525da0387ef89148dc7191aae00ca5fb23d7aafc2"}, + {file = "multidict-6.0.4.tar.gz", hash = "sha256:3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49"}, +] + +[[package]] +name = "nepattern" +version = "0.5.15" +requires_python = ">=3.8" +summary = "a complex pattern, support typing" +dependencies = [ + "tarina>=0.3.3", + "typing-extensions>=4.5.0", +] +files = [ + {file = "nepattern-0.5.15-py3-none-any.whl", hash = "sha256:c68fc7c0c9b7835c956a89e0f91fd380b8e07880e183414871e83ef4a9fa0dbd"}, + {file = "nepattern-0.5.15.tar.gz", hash = "sha256:3b04b91b5856b9826b61737933911f570a75ba8116b9e2ff8fa83b4aa0211203"}, +] + +[[package]] +name = "nonebot-plugin-alconna" +version = "0.33.8" +requires_python = ">=3.8" +summary = "Alconna Adapter for Nonebot" +dependencies = [ + "arclet-alconna-tools<0.7.0,>=0.6.7", + "arclet-alconna<2.0.0,>=1.7.38", + "fleep>=1.0.1", + "nepattern<0.6.0,>=0.5.14", + "nonebot2>=2.1.0", +] +files = [ + {file = "nonebot_plugin_alconna-0.33.8-py3-none-any.whl", hash = "sha256:e33e75a4c534810756e7d743ae6a16c1996af8f6f5bc51ba8fa8ab8618ca3b55"}, + {file = "nonebot_plugin_alconna-0.33.8.tar.gz", hash = "sha256:27ebdd8309db9d934ef703f3a0f6c8608e773cb2435cba0da29ac4936c105e19"}, +] + +[[package]] +name = "nonebot2" +version = "2.1.2" +requires_python = ">=3.8,<4.0" +summary = "An asynchronous python bot framework." +dependencies = [ + "loguru<1.0.0,>=0.6.0", + "pydantic[dotenv]<2.0.0,>=1.10.0", + "pygtrie<3.0.0,>=2.4.1", + "tomli<3.0.0,>=2.0.1; python_version < \"3.11\"", + "typing-extensions<5.0.0,>=4.4.0", + "yarl<2.0.0,>=1.7.2", +] +files = [ + {file = "nonebot2-2.1.2-py3-none-any.whl", hash = "sha256:a4df78e4c8b81773ea70b4b68d4ac3a5027d69517661d756772f11edf3cd3b1f"}, + {file = "nonebot2-2.1.2.tar.gz", hash = "sha256:afb3c141c67645cd038125287d0583aec2220eca998a8392e42ba87722f6659f"}, +] + +[[package]] +name = "numpy" +version = "1.26.2" +requires_python = ">=3.9" +summary = "Fundamental package for array computing in Python" +files = [ + {file = "numpy-1.26.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3703fc9258a4a122d17043e57b35e5ef1c5a5837c3db8be396c82e04c1cf9b0f"}, + {file = "numpy-1.26.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cc392fdcbd21d4be6ae1bb4475a03ce3b025cd49a9be5345d76d7585aea69440"}, + {file = "numpy-1.26.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36340109af8da8805d8851ef1d74761b3b88e81a9bd80b290bbfed61bd2b4f75"}, + {file = "numpy-1.26.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bcc008217145b3d77abd3e4d5ef586e3bdfba8fe17940769f8aa09b99e856c00"}, + {file = "numpy-1.26.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3ced40d4e9e18242f70dd02d739e44698df3dcb010d31f495ff00a31ef6014fe"}, + {file = "numpy-1.26.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b272d4cecc32c9e19911891446b72e986157e6a1809b7b56518b4f3755267523"}, + {file = "numpy-1.26.2-cp310-cp310-win32.whl", hash = "sha256:22f8fc02fdbc829e7a8c578dd8d2e15a9074b630d4da29cda483337e300e3ee9"}, + {file = "numpy-1.26.2-cp310-cp310-win_amd64.whl", hash = "sha256:26c9d33f8e8b846d5a65dd068c14e04018d05533b348d9eaeef6c1bd787f9919"}, + {file = "numpy-1.26.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b96e7b9c624ef3ae2ae0e04fa9b460f6b9f17ad8b4bec6d7756510f1f6c0c841"}, + {file = "numpy-1.26.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:aa18428111fb9a591d7a9cc1b48150097ba6a7e8299fb56bdf574df650e7d1f1"}, + {file = "numpy-1.26.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06fa1ed84aa60ea6ef9f91ba57b5ed963c3729534e6e54055fc151fad0423f0a"}, + {file = "numpy-1.26.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96ca5482c3dbdd051bcd1fce8034603d6ebfc125a7bd59f55b40d8f5d246832b"}, + {file = "numpy-1.26.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:854ab91a2906ef29dc3925a064fcd365c7b4da743f84b123002f6139bcb3f8a7"}, + {file = "numpy-1.26.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f43740ab089277d403aa07567be138fc2a89d4d9892d113b76153e0e412409f8"}, + {file = "numpy-1.26.2-cp311-cp311-win32.whl", hash = "sha256:a2bbc29fcb1771cd7b7425f98b05307776a6baf43035d3b80c4b0f29e9545186"}, + {file = "numpy-1.26.2-cp311-cp311-win_amd64.whl", hash = "sha256:2b3fca8a5b00184828d12b073af4d0fc5fdd94b1632c2477526f6bd7842d700d"}, + {file = "numpy-1.26.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a4cd6ed4a339c21f1d1b0fdf13426cb3b284555c27ac2f156dfdaaa7e16bfab0"}, + {file = "numpy-1.26.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5d5244aabd6ed7f312268b9247be47343a654ebea52a60f002dc70c769048e75"}, + {file = "numpy-1.26.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a3cdb4d9c70e6b8c0814239ead47da00934666f668426fc6e94cce869e13fd7"}, + {file = "numpy-1.26.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa317b2325f7aa0a9471663e6093c210cb2ae9c0ad824732b307d2c51983d5b6"}, + {file = "numpy-1.26.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:174a8880739c16c925799c018f3f55b8130c1f7c8e75ab0a6fa9d41cab092fd6"}, + {file = "numpy-1.26.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f79b231bf5c16b1f39c7f4875e1ded36abee1591e98742b05d8a0fb55d8a3eec"}, + {file = "numpy-1.26.2-cp312-cp312-win32.whl", hash = "sha256:4a06263321dfd3598cacb252f51e521a8cb4b6df471bb12a7ee5cbab20ea9167"}, + {file = "numpy-1.26.2-cp312-cp312-win_amd64.whl", hash = "sha256:b04f5dc6b3efdaab541f7857351aac359e6ae3c126e2edb376929bd3b7f92d7e"}, + {file = "numpy-1.26.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4eb8df4bf8d3d90d091e0146f6c28492b0be84da3e409ebef54349f71ed271ef"}, + {file = "numpy-1.26.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1a13860fdcd95de7cf58bd6f8bc5a5ef81c0b0625eb2c9a783948847abbef2c2"}, + {file = "numpy-1.26.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64308ebc366a8ed63fd0bf426b6a9468060962f1a4339ab1074c228fa6ade8e3"}, + {file = "numpy-1.26.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baf8aab04a2c0e859da118f0b38617e5ee65d75b83795055fb66c0d5e9e9b818"}, + {file = "numpy-1.26.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d73a3abcac238250091b11caef9ad12413dab01669511779bc9b29261dd50210"}, + {file = "numpy-1.26.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b361d369fc7e5e1714cf827b731ca32bff8d411212fccd29ad98ad622449cc36"}, + {file = "numpy-1.26.2-cp39-cp39-win32.whl", hash = "sha256:bd3f0091e845164a20bd5a326860c840fe2af79fa12e0469a12768a3ec578d80"}, + {file = "numpy-1.26.2-cp39-cp39-win_amd64.whl", hash = "sha256:2beef57fb031dcc0dc8fa4fe297a742027b954949cabb52a2a376c144e5e6060"}, + {file = "numpy-1.26.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:1cc3d5029a30fb5f06704ad6b23b35e11309491c999838c31f124fee32107c79"}, + {file = "numpy-1.26.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94cc3c222bb9fb5a12e334d0479b97bb2df446fbe622b470928f5284ffca3f8d"}, + {file = "numpy-1.26.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe6b44fb8fcdf7eda4ef4461b97b3f63c466b27ab151bec2366db8b197387841"}, + {file = "numpy-1.26.2.tar.gz", hash = "sha256:f65738447676ab5777f11e6bbbdb8ce11b785e105f690bc45966574816b6d3ea"}, +] + +[[package]] +name = "opencv-python-headless" +version = "4.8.1.78" +requires_python = ">=3.6" +summary = "Wrapper package for OpenCV python bindings." +dependencies = [ + "numpy>=1.17.0; python_version >= \"3.7\"", + "numpy>=1.17.3; python_version >= \"3.8\"", + "numpy>=1.19.3; python_version >= \"3.6\" and platform_system == \"Linux\" and platform_machine == \"aarch64\"", + "numpy>=1.19.3; python_version >= \"3.9\"", + "numpy>=1.21.0; python_version <= \"3.9\" and platform_system == \"Darwin\" and platform_machine == \"arm64\"", + "numpy>=1.21.2; python_version >= \"3.10\"", + "numpy>=1.21.4; python_version >= \"3.10\" and platform_system == \"Darwin\"", + "numpy>=1.23.5; python_version >= \"3.11\"", +] +files = [ + {file = "opencv-python-headless-4.8.1.78.tar.gz", hash = "sha256:bc7197b42352f6f865c302a49140b889ec7cd957dd697e2d7fc016ad0d3f28f1"}, + {file = "opencv_python_headless-4.8.1.78-cp37-abi3-macosx_10_16_x86_64.whl", hash = "sha256:f3a33f644249f9ce1c913eac580e4b3ef4ce7cab0a71900274708959c2feb5e3"}, + {file = "opencv_python_headless-4.8.1.78-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:2c7d45721df9801c4dcd34683a15caa0e30f38b185263fec04a6eb274bc720f0"}, + {file = "opencv_python_headless-4.8.1.78-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b6bd6e1132b6f5dcb3a5bfe30fc4d341a7bfb26134da349a06c9255288ded94"}, + {file = "opencv_python_headless-4.8.1.78-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58e70d2f0915fe23e02c6e405588276c9397844a47d38b9c87fac5f7f9ba2dcc"}, + {file = "opencv_python_headless-4.8.1.78-cp37-abi3-win32.whl", hash = "sha256:382f8c7a6a14f80091284eecedd52cee4812231ee0eff1118592197b538d9252"}, + {file = "opencv_python_headless-4.8.1.78-cp37-abi3-win_amd64.whl", hash = "sha256:0a0f1e9f836f7d5bad1dd164694944c8761711cbdf4b36ebbd4815a8ef731079"}, +] + +[[package]] +name = "packaging" +version = "23.2" +requires_python = ">=3.7" +summary = "Core utilities for Python packages" +files = [ + {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, + {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, +] + +[[package]] +name = "pil-utils" +version = "0.1.8" +requires_python = ">=3.8,<4.0" +summary = "A simple PIL wrapper and text-to-image tool" +dependencies = [ + "Pillow<11.0.0,>=9.2.0", + "bbcode<2.0.0,>=1.1.0", + "fonttools<5.0.0,>=4.0.0", + "matplotlib<4.0.0,>=3.0.0", + "numpy<2.0.0,>=1.20.0", + "opencv-python-headless<5.0.0,>=4.0.0", +] +files = [ + {file = "pil_utils-0.1.8-py3-none-any.whl", hash = "sha256:22b0ed4eeb532386fb61658795c88c77919440f6169ccea76428c83bb0257f72"}, + {file = "pil_utils-0.1.8.tar.gz", hash = "sha256:6223cb1451449a4c9ebc48d6a9e3705711ecf7c120db97d9cd4ca2bc9e0f0618"}, +] + +[[package]] +name = "pillow" +version = "10.1.0" +requires_python = ">=3.8" +summary = "Python Imaging Library (Fork)" +files = [ + {file = "Pillow-10.1.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1ab05f3db77e98f93964697c8efc49c7954b08dd61cff526b7f2531a22410106"}, + {file = "Pillow-10.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6932a7652464746fcb484f7fc3618e6503d2066d853f68a4bd97193a3996e273"}, + {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f63b5a68daedc54c7c3464508d8c12075e56dcfbd42f8c1bf40169061ae666"}, + {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0949b55eb607898e28eaccb525ab104b2d86542a85c74baf3a6dc24002edec2"}, + {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ae88931f93214777c7a3aa0a8f92a683f83ecde27f65a45f95f22d289a69e593"}, + {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b0eb01ca85b2361b09480784a7931fc648ed8b7836f01fb9241141b968feb1db"}, + {file = "Pillow-10.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d27b5997bdd2eb9fb199982bb7eb6164db0426904020dc38c10203187ae2ff2f"}, + {file = "Pillow-10.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7df5608bc38bd37ef585ae9c38c9cd46d7c81498f086915b0f97255ea60c2818"}, + {file = "Pillow-10.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:41f67248d92a5e0a2076d3517d8d4b1e41a97e2df10eb8f93106c89107f38b57"}, + {file = "Pillow-10.1.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1fb29c07478e6c06a46b867e43b0bcdb241b44cc52be9bc25ce5944eed4648e7"}, + {file = "Pillow-10.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2cdc65a46e74514ce742c2013cd4a2d12e8553e3a2563c64879f7c7e4d28bce7"}, + {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50d08cd0a2ecd2a8657bd3d82c71efd5a58edb04d9308185d66c3a5a5bed9610"}, + {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:062a1610e3bc258bff2328ec43f34244fcec972ee0717200cb1425214fe5b839"}, + {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:61f1a9d247317fa08a308daaa8ee7b3f760ab1809ca2da14ecc88ae4257d6172"}, + {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a646e48de237d860c36e0db37ecaecaa3619e6f3e9d5319e527ccbc8151df061"}, + {file = "Pillow-10.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:47e5bf85b80abc03be7455c95b6d6e4896a62f6541c1f2ce77a7d2bb832af262"}, + {file = "Pillow-10.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a92386125e9ee90381c3369f57a2a50fa9e6aa8b1cf1d9c4b200d41a7dd8e992"}, + {file = "Pillow-10.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:0f7c276c05a9767e877a0b4c5050c8bee6a6d960d7f0c11ebda6b99746068c2a"}, + {file = "Pillow-10.1.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:a89b8312d51715b510a4fe9fc13686283f376cfd5abca8cd1c65e4c76e21081b"}, + {file = "Pillow-10.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:00f438bb841382b15d7deb9a05cc946ee0f2c352653c7aa659e75e592f6fa17d"}, + {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d929a19f5469b3f4df33a3df2983db070ebb2088a1e145e18facbc28cae5b27"}, + {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a92109192b360634a4489c0c756364c0c3a2992906752165ecb50544c251312"}, + {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:0248f86b3ea061e67817c47ecbe82c23f9dd5d5226200eb9090b3873d3ca32de"}, + {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:9882a7451c680c12f232a422730f986a1fcd808da0fd428f08b671237237d651"}, + {file = "Pillow-10.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1c3ac5423c8c1da5928aa12c6e258921956757d976405e9467c5f39d1d577a4b"}, + {file = "Pillow-10.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:806abdd8249ba3953c33742506fe414880bad78ac25cc9a9b1c6ae97bedd573f"}, + {file = "Pillow-10.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:eaed6977fa73408b7b8a24e8b14e59e1668cfc0f4c40193ea7ced8e210adf996"}, + {file = "Pillow-10.1.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:fe1e26e1ffc38be097f0ba1d0d07fcade2bcfd1d023cda5b29935ae8052bd793"}, + {file = "Pillow-10.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7a7e3daa202beb61821c06d2517428e8e7c1aab08943e92ec9e5755c2fc9ba5e"}, + {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:24fadc71218ad2b8ffe437b54876c9382b4a29e030a05a9879f615091f42ffc2"}, + {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa1d323703cfdac2036af05191b969b910d8f115cf53093125e4058f62012c9a"}, + {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:912e3812a1dbbc834da2b32299b124b5ddcb664ed354916fd1ed6f193f0e2d01"}, + {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:7dbaa3c7de82ef37e7708521be41db5565004258ca76945ad74a8e998c30af8d"}, + {file = "Pillow-10.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9d7bc666bd8c5a4225e7ac71f2f9d12466ec555e89092728ea0f5c0c2422ea80"}, + {file = "Pillow-10.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:baada14941c83079bf84c037e2d8b7506ce201e92e3d2fa0d1303507a8538212"}, + {file = "Pillow-10.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:2ef6721c97894a7aa77723740a09547197533146fba8355e86d6d9a4a1056b14"}, + {file = "Pillow-10.1.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0a026c188be3b443916179f5d04548092e253beb0c3e2ee0a4e2cdad72f66099"}, + {file = "Pillow-10.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:04f6f6149f266a100374ca3cc368b67fb27c4af9f1cc8cb6306d849dcdf12616"}, + {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb40c011447712d2e19cc261c82655f75f32cb724788df315ed992a4d65696bb"}, + {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a8413794b4ad9719346cd9306118450b7b00d9a15846451549314a58ac42219"}, + {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c9aeea7b63edb7884b031a35305629a7593272b54f429a9869a4f63a1bf04c34"}, + {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b4005fee46ed9be0b8fb42be0c20e79411533d1fd58edabebc0dd24626882cfd"}, + {file = "Pillow-10.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4d0152565c6aa6ebbfb1e5d8624140a440f2b99bf7afaafbdbf6430426497f28"}, + {file = "Pillow-10.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d921bc90b1defa55c9917ca6b6b71430e4286fc9e44c55ead78ca1a9f9eba5f2"}, + {file = "Pillow-10.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:cfe96560c6ce2f4c07d6647af2d0f3c54cc33289894ebd88cfbb3bcd5391e256"}, + {file = "Pillow-10.1.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:937bdc5a7f5343d1c97dc98149a0be7eb9704e937fe3dc7140e229ae4fc572a7"}, + {file = "Pillow-10.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1c25762197144e211efb5f4e8ad656f36c8d214d390585d1d21281f46d556ba"}, + {file = "Pillow-10.1.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:afc8eef765d948543a4775f00b7b8c079b3321d6b675dde0d02afa2ee23000b4"}, + {file = "Pillow-10.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:883f216eac8712b83a63f41b76ddfb7b2afab1b74abbb413c5df6680f071a6b9"}, + {file = "Pillow-10.1.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b920e4d028f6442bea9a75b7491c063f0b9a3972520731ed26c83e254302eb1e"}, + {file = "Pillow-10.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c41d960babf951e01a49c9746f92c5a7e0d939d1652d7ba30f6b3090f27e412"}, + {file = "Pillow-10.1.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1fafabe50a6977ac70dfe829b2d5735fd54e190ab55259ec8aea4aaea412fa0b"}, + {file = "Pillow-10.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3b834f4b16173e5b92ab6566f0473bfb09f939ba14b23b8da1f54fa63e4b623f"}, + {file = "Pillow-10.1.0.tar.gz", hash = "sha256:e6bf8de6c36ed96c86ea3b6e1d5273c53f46ef518a062464cd7ef5dd2cf92e38"}, +] + +[[package]] +name = "pydantic" +version = "1.10.13" +requires_python = ">=3.7" +summary = "Data validation and settings management using python type hints" +dependencies = [ + "typing-extensions>=4.2.0", +] +files = [ + {file = "pydantic-1.10.13-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:efff03cc7a4f29d9009d1c96ceb1e7a70a65cfe86e89d34e4a5f2ab1e5693737"}, + {file = "pydantic-1.10.13-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3ecea2b9d80e5333303eeb77e180b90e95eea8f765d08c3d278cd56b00345d01"}, + {file = "pydantic-1.10.13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1740068fd8e2ef6eb27a20e5651df000978edce6da6803c2bef0bc74540f9548"}, + {file = "pydantic-1.10.13-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:84bafe2e60b5e78bc64a2941b4c071a4b7404c5c907f5f5a99b0139781e69ed8"}, + {file = "pydantic-1.10.13-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bc0898c12f8e9c97f6cd44c0ed70d55749eaf783716896960b4ecce2edfd2d69"}, + {file = "pydantic-1.10.13-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:654db58ae399fe6434e55325a2c3e959836bd17a6f6a0b6ca8107ea0571d2e17"}, + {file = "pydantic-1.10.13-cp310-cp310-win_amd64.whl", hash = "sha256:75ac15385a3534d887a99c713aa3da88a30fbd6204a5cd0dc4dab3d770b9bd2f"}, + {file = "pydantic-1.10.13-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c553f6a156deb868ba38a23cf0df886c63492e9257f60a79c0fd8e7173537653"}, + {file = "pydantic-1.10.13-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5e08865bc6464df8c7d61439ef4439829e3ab62ab1669cddea8dd00cd74b9ffe"}, + {file = "pydantic-1.10.13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e31647d85a2013d926ce60b84f9dd5300d44535a9941fe825dc349ae1f760df9"}, + {file = "pydantic-1.10.13-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:210ce042e8f6f7c01168b2d84d4c9eb2b009fe7bf572c2266e235edf14bacd80"}, + {file = "pydantic-1.10.13-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:8ae5dd6b721459bfa30805f4c25880e0dd78fc5b5879f9f7a692196ddcb5a580"}, + {file = "pydantic-1.10.13-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f8e81fc5fb17dae698f52bdd1c4f18b6ca674d7068242b2aff075f588301bbb0"}, + {file = "pydantic-1.10.13-cp311-cp311-win_amd64.whl", hash = "sha256:61d9dce220447fb74f45e73d7ff3b530e25db30192ad8d425166d43c5deb6df0"}, + {file = "pydantic-1.10.13-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c958d053453a1c4b1c2062b05cd42d9d5c8eb67537b8d5a7e3c3032943ecd261"}, + {file = "pydantic-1.10.13-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4c5370a7edaac06daee3af1c8b1192e305bc102abcbf2a92374b5bc793818599"}, + {file = "pydantic-1.10.13-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d6f6e7305244bddb4414ba7094ce910560c907bdfa3501e9db1a7fd7eaea127"}, + {file = "pydantic-1.10.13-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d3a3c792a58e1622667a2837512099eac62490cdfd63bd407993aaf200a4cf1f"}, + {file = "pydantic-1.10.13-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c636925f38b8db208e09d344c7aa4f29a86bb9947495dd6b6d376ad10334fb78"}, + {file = "pydantic-1.10.13-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:678bcf5591b63cc917100dc50ab6caebe597ac67e8c9ccb75e698f66038ea953"}, + {file = "pydantic-1.10.13-cp38-cp38-win_amd64.whl", hash = "sha256:6cf25c1a65c27923a17b3da28a0bdb99f62ee04230c931d83e888012851f4e7f"}, + {file = "pydantic-1.10.13-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8ef467901d7a41fa0ca6db9ae3ec0021e3f657ce2c208e98cd511f3161c762c6"}, + {file = "pydantic-1.10.13-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:968ac42970f57b8344ee08837b62f6ee6f53c33f603547a55571c954a4225691"}, + {file = "pydantic-1.10.13-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9849f031cf8a2f0a928fe885e5a04b08006d6d41876b8bbd2fc68a18f9f2e3fd"}, + {file = "pydantic-1.10.13-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:56e3ff861c3b9c6857579de282ce8baabf443f42ffba355bf070770ed63e11e1"}, + {file = "pydantic-1.10.13-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f00790179497767aae6bcdc36355792c79e7bbb20b145ff449700eb076c5f96"}, + {file = "pydantic-1.10.13-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:75b297827b59bc229cac1a23a2f7a4ac0031068e5be0ce385be1462e7e17a35d"}, + {file = "pydantic-1.10.13-cp39-cp39-win_amd64.whl", hash = "sha256:e70ca129d2053fb8b728ee7d1af8e553a928d7e301a311094b8a0501adc8763d"}, + {file = "pydantic-1.10.13-py3-none-any.whl", hash = "sha256:b87326822e71bd5f313e7d3bfdc77ac3247035ac10b0c0618bd99dcf95b1e687"}, + {file = "pydantic-1.10.13.tar.gz", hash = "sha256:32c8b48dcd3b2ac4e78b0ba4af3a2c2eb6048cb75202f0ea7b34feb740efc340"}, +] + +[[package]] +name = "pydantic" +version = "1.10.13" +extras = ["dotenv"] +requires_python = ">=3.7" +summary = "Data validation and settings management using python type hints" +dependencies = [ + "pydantic==1.10.13", + "python-dotenv>=0.10.4", +] +files = [ + {file = "pydantic-1.10.13-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:efff03cc7a4f29d9009d1c96ceb1e7a70a65cfe86e89d34e4a5f2ab1e5693737"}, + {file = "pydantic-1.10.13-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3ecea2b9d80e5333303eeb77e180b90e95eea8f765d08c3d278cd56b00345d01"}, + {file = "pydantic-1.10.13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1740068fd8e2ef6eb27a20e5651df000978edce6da6803c2bef0bc74540f9548"}, + {file = "pydantic-1.10.13-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:84bafe2e60b5e78bc64a2941b4c071a4b7404c5c907f5f5a99b0139781e69ed8"}, + {file = "pydantic-1.10.13-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bc0898c12f8e9c97f6cd44c0ed70d55749eaf783716896960b4ecce2edfd2d69"}, + {file = "pydantic-1.10.13-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:654db58ae399fe6434e55325a2c3e959836bd17a6f6a0b6ca8107ea0571d2e17"}, + {file = "pydantic-1.10.13-cp310-cp310-win_amd64.whl", hash = "sha256:75ac15385a3534d887a99c713aa3da88a30fbd6204a5cd0dc4dab3d770b9bd2f"}, + {file = "pydantic-1.10.13-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c553f6a156deb868ba38a23cf0df886c63492e9257f60a79c0fd8e7173537653"}, + {file = "pydantic-1.10.13-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5e08865bc6464df8c7d61439ef4439829e3ab62ab1669cddea8dd00cd74b9ffe"}, + {file = "pydantic-1.10.13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e31647d85a2013d926ce60b84f9dd5300d44535a9941fe825dc349ae1f760df9"}, + {file = "pydantic-1.10.13-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:210ce042e8f6f7c01168b2d84d4c9eb2b009fe7bf572c2266e235edf14bacd80"}, + {file = "pydantic-1.10.13-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:8ae5dd6b721459bfa30805f4c25880e0dd78fc5b5879f9f7a692196ddcb5a580"}, + {file = "pydantic-1.10.13-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f8e81fc5fb17dae698f52bdd1c4f18b6ca674d7068242b2aff075f588301bbb0"}, + {file = "pydantic-1.10.13-cp311-cp311-win_amd64.whl", hash = "sha256:61d9dce220447fb74f45e73d7ff3b530e25db30192ad8d425166d43c5deb6df0"}, + {file = "pydantic-1.10.13-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c958d053453a1c4b1c2062b05cd42d9d5c8eb67537b8d5a7e3c3032943ecd261"}, + {file = "pydantic-1.10.13-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4c5370a7edaac06daee3af1c8b1192e305bc102abcbf2a92374b5bc793818599"}, + {file = "pydantic-1.10.13-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d6f6e7305244bddb4414ba7094ce910560c907bdfa3501e9db1a7fd7eaea127"}, + {file = "pydantic-1.10.13-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d3a3c792a58e1622667a2837512099eac62490cdfd63bd407993aaf200a4cf1f"}, + {file = "pydantic-1.10.13-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c636925f38b8db208e09d344c7aa4f29a86bb9947495dd6b6d376ad10334fb78"}, + {file = "pydantic-1.10.13-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:678bcf5591b63cc917100dc50ab6caebe597ac67e8c9ccb75e698f66038ea953"}, + {file = "pydantic-1.10.13-cp38-cp38-win_amd64.whl", hash = "sha256:6cf25c1a65c27923a17b3da28a0bdb99f62ee04230c931d83e888012851f4e7f"}, + {file = "pydantic-1.10.13-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8ef467901d7a41fa0ca6db9ae3ec0021e3f657ce2c208e98cd511f3161c762c6"}, + {file = "pydantic-1.10.13-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:968ac42970f57b8344ee08837b62f6ee6f53c33f603547a55571c954a4225691"}, + {file = "pydantic-1.10.13-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9849f031cf8a2f0a928fe885e5a04b08006d6d41876b8bbd2fc68a18f9f2e3fd"}, + {file = "pydantic-1.10.13-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:56e3ff861c3b9c6857579de282ce8baabf443f42ffba355bf070770ed63e11e1"}, + {file = "pydantic-1.10.13-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f00790179497767aae6bcdc36355792c79e7bbb20b145ff449700eb076c5f96"}, + {file = "pydantic-1.10.13-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:75b297827b59bc229cac1a23a2f7a4ac0031068e5be0ce385be1462e7e17a35d"}, + {file = "pydantic-1.10.13-cp39-cp39-win_amd64.whl", hash = "sha256:e70ca129d2053fb8b728ee7d1af8e553a928d7e301a311094b8a0501adc8763d"}, + {file = "pydantic-1.10.13-py3-none-any.whl", hash = "sha256:b87326822e71bd5f313e7d3bfdc77ac3247035ac10b0c0618bd99dcf95b1e687"}, + {file = "pydantic-1.10.13.tar.gz", hash = "sha256:32c8b48dcd3b2ac4e78b0ba4af3a2c2eb6048cb75202f0ea7b34feb740efc340"}, +] + +[[package]] +name = "pygtrie" +version = "2.5.0" +summary = "A pure Python trie data structure implementation." +files = [ + {file = "pygtrie-2.5.0-py3-none-any.whl", hash = "sha256:8795cda8105493d5ae159a5bef313ff13156c5d4d72feddefacaad59f8c8ce16"}, + {file = "pygtrie-2.5.0.tar.gz", hash = "sha256:203514ad826eb403dab1d2e2ddd034e0d1534bbe4dbe0213bb0593f66beba4e2"}, +] + +[[package]] +name = "pyparsing" +version = "3.1.1" +requires_python = ">=3.6.8" +summary = "pyparsing module - Classes and methods to define and execute parsing grammars" +files = [ + {file = "pyparsing-3.1.1-py3-none-any.whl", hash = "sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb"}, + {file = "pyparsing-3.1.1.tar.gz", hash = "sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db"}, +] + +[[package]] +name = "python-dateutil" +version = "2.8.2" +requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +summary = "Extensions to the standard Python datetime module" +dependencies = [ + "six>=1.5", +] +files = [ + {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, + {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, +] + +[[package]] +name = "python-dotenv" +version = "1.0.0" +requires_python = ">=3.8" +summary = "Read key-value pairs from a .env file and set them as environment variables" +files = [ + {file = "python-dotenv-1.0.0.tar.gz", hash = "sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba"}, + {file = "python_dotenv-1.0.0-py3-none-any.whl", hash = "sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a"}, +] + +[[package]] +name = "six" +version = "1.16.0" +requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +summary = "Python 2 and 3 compatibility utilities" +files = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] + +[[package]] +name = "tarina" +version = "0.4.2" +requires_python = ">=3.8" +summary = "A collection of common utils for Arclet" +dependencies = [ + "typing-extensions>=4.4.0", +] +files = [ + {file = "tarina-0.4.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c46b2b827a4d14f521c5f323e1cb8ed5350d3d9bf8e7828100265903526b9907"}, + {file = "tarina-0.4.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dc78a3c653fdea3f2ae642584a6a55cf26856b4858875068a7cfca92b13bca6b"}, + {file = "tarina-0.4.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c1943cabd1707e52b1bfc478c33c48c04d6c0d3ef9425ad808265d7965142c3b"}, + {file = "tarina-0.4.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:872507bc155412ab71f202a9b28ee170bd395c7cf8dbee63bfe78845265717a2"}, + {file = "tarina-0.4.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61aab6935092373fd53565ec7ba894ff9567e4620535a26362aeb66826f6d0d7"}, + {file = "tarina-0.4.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5ae2ccd7aa409d33ea14944533b93f15cee71a1a7f4547f0cfef1ad6153ed142"}, + {file = "tarina-0.4.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ee72b6a55215ad6acc1d50fbd227d972138adacc9f7c6a3f1c63080780d968ed"}, + {file = "tarina-0.4.2-cp310-cp310-win32.whl", hash = "sha256:4f417bb80c18d5f87f27bcb1e70d5eaae125578440c6bbe4c5275c6c633a7475"}, + {file = "tarina-0.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:e54de934c6a754e27daf64a04d6ca287303f7b7e6f8ecee6cb8162577ffc2a6c"}, + {file = "tarina-0.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:30ec63fce2556f9e63d8d774a74ef688d9c46dd04f198d3b9a653cd5c539fd5e"}, + {file = "tarina-0.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:03718dd5630daa7ee84f31ae258c979f168f4b58149a0647af706bff64268321"}, + {file = "tarina-0.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8d49030aefd8486fdb5b91e72c188451de216fb71c636cbd33a7eee5e6c73daf"}, + {file = "tarina-0.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4ad962153c9f63ad1e89acd3d9bbbcee21b5ea07ee0e8dac06c6d2471ee8337d"}, + {file = "tarina-0.4.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e2a8a9bfd4a9a5907c2c64e163c374eaed24b1e0df3fe9d0bd7d52a9f730daa"}, + {file = "tarina-0.4.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:50a2bea62c32cf9a6cd89f7eb1b2a1a5a5ca3b7533960abdcc77956121267de1"}, + {file = "tarina-0.4.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0c6c16b01783797cbd12eeef042a7ed96a5531b01b931e50ac5afb3d9d4d1634"}, + {file = "tarina-0.4.2-cp311-cp311-win32.whl", hash = "sha256:c4b54ebdfeb63f9a60ca4c70014784eb50c00ad892e9ad8211527e2d57108abb"}, + {file = "tarina-0.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:b613afb8e3381f64e2ede5ad17b7c013515f601b8ce335dead5403aa5ac58281"}, + {file = "tarina-0.4.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a95da4a609cdf7e888e1688c0d332acf9c62633f81a40cf851ce3649c3fb9283"}, + {file = "tarina-0.4.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a3cb636ec94d5f7a6bb7a7bfc451e484c6e8ea7bc04144eb4662d692923ca8ca"}, + {file = "tarina-0.4.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b1f4a76784f47a89e7e2bb44136fe8e07a636f50fbc4b24f0d8da63cc28ebf78"}, + {file = "tarina-0.4.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:45348f4ecfa21b84c103ef021b161020637c7a6aa02e02440fbe3418cc4a5654"}, + {file = "tarina-0.4.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1848011cf5707aad0899236bcc972f86ef5554ec4799a8ddf15ef53aea784ff"}, + {file = "tarina-0.4.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:494ccf76d4428de18c59464f5a9e1c8b6d0bf598941a8b0d9f407729f81e0a95"}, + {file = "tarina-0.4.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0086c91358536549f61a6ac24861764ef1a607a91bd82a2dbd574392de26dff0"}, + {file = "tarina-0.4.2-cp38-cp38-win32.whl", hash = "sha256:c30618a7c8586719ff46c12b653d52e969c0a5105698f3fdbff8e5293b135b63"}, + {file = "tarina-0.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:6b7b3bff3cbf0901f55c87739af297fd6692f53d3d3a55d0de12e7e41e4e7ff4"}, + {file = "tarina-0.4.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:af75e381a0ae7481741f37221fa721816d78c6e34791ac14a29d41f148bfae49"}, + {file = "tarina-0.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:938fe8e9fe950eb4ab1824f72d55973cae98aaeacba1bf6ce2f6e5729f9b8555"}, + {file = "tarina-0.4.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:46737007a43cfef9ba20409230beb49a6754de498930eb1105edf0687ce4d6d8"}, + {file = "tarina-0.4.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbbbdd2aee142d3c0888ebce2481ad15e4d505c040fee1b9c7809bf3c9e83649"}, + {file = "tarina-0.4.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b4781c783266e2d4eccc975ba79e1e0b4b465d267e616b5b44f32981a289a7a"}, + {file = "tarina-0.4.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:01d1b3b0e0079e5f372111b149815d70d4a063a83f1a656d6acd91e67fa9c862"}, + {file = "tarina-0.4.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d493c5492a27964aa4f8fa65ac6eab172624b8d25718b1a5e2261102ac363b26"}, + {file = "tarina-0.4.2-cp39-cp39-win32.whl", hash = "sha256:df510f8d8a2cb5e684f2412d98a3f2654986e40c2a697be686f0b27f51ea7c36"}, + {file = "tarina-0.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:646f74e7426acf2644461a2077b72677d964b5c064f6cb2df8c60c77580e1f89"}, + {file = "tarina-0.4.2-py3-none-any.whl", hash = "sha256:08650c08b1950e7346b13f20ff695d3d3d0d7a9d240521a7544c433ba326a736"}, + {file = "tarina-0.4.2.tar.gz", hash = "sha256:a719c31c1e65c5fb68c12fbacffe802f160678d2e6a9745d1241b924e9283791"}, +] + +[[package]] +name = "tomli" +version = "2.0.1" +requires_python = ">=3.7" +summary = "A lil' TOML parser" +files = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] + +[[package]] +name = "typing-extensions" +version = "4.8.0" +requires_python = ">=3.8" +summary = "Backported and Experimental Type Hints for Python 3.8+" +files = [ + {file = "typing_extensions-4.8.0-py3-none-any.whl", hash = "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0"}, + {file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"}, +] + +[[package]] +name = "win32-setctime" +version = "1.1.0" +requires_python = ">=3.5" +summary = "A small Python utility to set file creation time on Windows" +files = [ + {file = "win32_setctime-1.1.0-py3-none-any.whl", hash = "sha256:231db239e959c2fe7eb1d7dc129f11172354f98361c4fa2d6d2d7e278baa8aad"}, + {file = "win32_setctime-1.1.0.tar.gz", hash = "sha256:15cf5750465118d6929ae4de4eb46e8edae9a5634350c01ba582df868e932cb2"}, +] + +[[package]] +name = "yarl" +version = "1.9.3" +requires_python = ">=3.7" +summary = "Yet another URL library" +dependencies = [ + "idna>=2.0", + "multidict>=4.0", +] +files = [ + {file = "yarl-1.9.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:32435d134414e01d937cd9d6cc56e8413a8d4741dea36af5840c7750f04d16ab"}, + {file = "yarl-1.9.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9a5211de242754b5e612557bca701f39f8b1a9408dff73c6db623f22d20f470e"}, + {file = "yarl-1.9.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:525cd69eff44833b01f8ef39aa33a9cc53a99ff7f9d76a6ef6a9fb758f54d0ff"}, + {file = "yarl-1.9.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc94441bcf9cb8c59f51f23193316afefbf3ff858460cb47b5758bf66a14d130"}, + {file = "yarl-1.9.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e36021db54b8a0475805acc1d6c4bca5d9f52c3825ad29ae2d398a9d530ddb88"}, + {file = "yarl-1.9.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e0f17d1df951336a02afc8270c03c0c6e60d1f9996fcbd43a4ce6be81de0bd9d"}, + {file = "yarl-1.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c5f3faeb8100a43adf3e7925d556801d14b5816a0ac9e75e22948e787feec642"}, + {file = "yarl-1.9.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aed37db837ecb5962469fad448aaae0f0ee94ffce2062cf2eb9aed13328b5196"}, + {file = "yarl-1.9.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:721ee3fc292f0d069a04016ef2c3a25595d48c5b8ddc6029be46f6158d129c92"}, + {file = "yarl-1.9.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:b8bc5b87a65a4e64bc83385c05145ea901b613d0d3a434d434b55511b6ab0067"}, + {file = "yarl-1.9.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:dd952b9c64f3b21aedd09b8fe958e4931864dba69926d8a90c90d36ac4e28c9a"}, + {file = "yarl-1.9.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:c405d482c320a88ab53dcbd98d6d6f32ada074f2d965d6e9bf2d823158fa97de"}, + {file = "yarl-1.9.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9df9a0d4c5624790a0dea2e02e3b1b3c69aed14bcb8650e19606d9df3719e87d"}, + {file = "yarl-1.9.3-cp310-cp310-win32.whl", hash = "sha256:d34c4f80956227f2686ddea5b3585e109c2733e2d4ef12eb1b8b4e84f09a2ab6"}, + {file = "yarl-1.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:cf7a4e8de7f1092829caef66fd90eaf3710bc5efd322a816d5677b7664893c93"}, + {file = "yarl-1.9.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d61a0ca95503867d4d627517bcfdc28a8468c3f1b0b06c626f30dd759d3999fd"}, + {file = "yarl-1.9.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:73cc83f918b69110813a7d95024266072d987b903a623ecae673d1e71579d566"}, + {file = "yarl-1.9.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d81657b23e0edb84b37167e98aefb04ae16cbc5352770057893bd222cdc6e45f"}, + {file = "yarl-1.9.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26a1a8443091c7fbc17b84a0d9f38de34b8423b459fb853e6c8cdfab0eacf613"}, + {file = "yarl-1.9.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fe34befb8c765b8ce562f0200afda3578f8abb159c76de3ab354c80b72244c41"}, + {file = "yarl-1.9.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2c757f64afe53a422e45e3e399e1e3cf82b7a2f244796ce80d8ca53e16a49b9f"}, + {file = "yarl-1.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72a57b41a0920b9a220125081c1e191b88a4cdec13bf9d0649e382a822705c65"}, + {file = "yarl-1.9.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:632c7aeb99df718765adf58eacb9acb9cbc555e075da849c1378ef4d18bf536a"}, + {file = "yarl-1.9.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b0b8c06afcf2bac5a50b37f64efbde978b7f9dc88842ce9729c020dc71fae4ce"}, + {file = "yarl-1.9.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1d93461e2cf76c4796355494f15ffcb50a3c198cc2d601ad8d6a96219a10c363"}, + {file = "yarl-1.9.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:4003f380dac50328c85e85416aca6985536812c082387255c35292cb4b41707e"}, + {file = "yarl-1.9.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4d6d74a97e898c1c2df80339aa423234ad9ea2052f66366cef1e80448798c13d"}, + {file = "yarl-1.9.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b61e64b06c3640feab73fa4ff9cb64bd8182de52e5dc13038e01cfe674ebc321"}, + {file = "yarl-1.9.3-cp311-cp311-win32.whl", hash = "sha256:29beac86f33d6c7ab1d79bd0213aa7aed2d2f555386856bb3056d5fdd9dab279"}, + {file = "yarl-1.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:f7271d6bd8838c49ba8ae647fc06469137e1c161a7ef97d778b72904d9b68696"}, + {file = "yarl-1.9.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:dd318e6b75ca80bff0b22b302f83a8ee41c62b8ac662ddb49f67ec97e799885d"}, + {file = "yarl-1.9.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c4b1efb11a8acd13246ffb0bee888dd0e8eb057f8bf30112e3e21e421eb82d4a"}, + {file = "yarl-1.9.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c6f034386e5550b5dc8ded90b5e2ff7db21f0f5c7de37b6efc5dac046eb19c10"}, + {file = "yarl-1.9.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd49a908cb6d387fc26acee8b7d9fcc9bbf8e1aca890c0b2fdfd706057546080"}, + {file = "yarl-1.9.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa4643635f26052401750bd54db911b6342eb1a9ac3e74f0f8b58a25d61dfe41"}, + {file = "yarl-1.9.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e741bd48e6a417bdfbae02e088f60018286d6c141639359fb8df017a3b69415a"}, + {file = "yarl-1.9.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c86d0d0919952d05df880a1889a4f0aeb6868e98961c090e335671dea5c0361"}, + {file = "yarl-1.9.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3d5434b34100b504aabae75f0622ebb85defffe7b64ad8f52b8b30ec6ef6e4b9"}, + {file = "yarl-1.9.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:79e1df60f7c2b148722fb6cafebffe1acd95fd8b5fd77795f56247edaf326752"}, + {file = "yarl-1.9.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:44e91a669c43f03964f672c5a234ae0d7a4d49c9b85d1baa93dec28afa28ffbd"}, + {file = "yarl-1.9.3-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:3cfa4dbe17b2e6fca1414e9c3bcc216f6930cb18ea7646e7d0d52792ac196808"}, + {file = "yarl-1.9.3-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:88d2c3cc4b2f46d1ba73d81c51ec0e486f59cc51165ea4f789677f91a303a9a7"}, + {file = "yarl-1.9.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:cccdc02e46d2bd7cb5f38f8cc3d9db0d24951abd082b2f242c9e9f59c0ab2af3"}, + {file = "yarl-1.9.3-cp312-cp312-win32.whl", hash = "sha256:96758e56dceb8a70f8a5cff1e452daaeff07d1cc9f11e9b0c951330f0a2396a7"}, + {file = "yarl-1.9.3-cp312-cp312-win_amd64.whl", hash = "sha256:c4472fe53ebf541113e533971bd8c32728debc4c6d8cc177f2bff31d011ec17e"}, + {file = "yarl-1.9.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:bb72d2a94481e7dc7a0c522673db288f31849800d6ce2435317376a345728225"}, + {file = "yarl-1.9.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9a172c3d5447b7da1680a1a2d6ecdf6f87a319d21d52729f45ec938a7006d5d8"}, + {file = "yarl-1.9.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2dc72e891672343b99db6d497024bf8b985537ad6c393359dc5227ef653b2f17"}, + {file = "yarl-1.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8d51817cf4b8d545963ec65ff06c1b92e5765aa98831678d0e2240b6e9fd281"}, + {file = "yarl-1.9.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:53ec65f7eee8655bebb1f6f1607760d123c3c115a324b443df4f916383482a67"}, + {file = "yarl-1.9.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cfd77e8e5cafba3fb584e0f4b935a59216f352b73d4987be3af51f43a862c403"}, + {file = "yarl-1.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e73db54c967eb75037c178a54445c5a4e7461b5203b27c45ef656a81787c0c1b"}, + {file = "yarl-1.9.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09c19e5f4404574fcfb736efecf75844ffe8610606f3fccc35a1515b8b6712c4"}, + {file = "yarl-1.9.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6280353940f7e5e2efaaabd686193e61351e966cc02f401761c4d87f48c89ea4"}, + {file = "yarl-1.9.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c25ec06e4241e162f5d1f57c370f4078797ade95c9208bd0c60f484834f09c96"}, + {file = "yarl-1.9.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:7217234b10c64b52cc39a8d82550342ae2e45be34f5bff02b890b8c452eb48d7"}, + {file = "yarl-1.9.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:4ce77d289f8d40905c054b63f29851ecbfd026ef4ba5c371a158cfe6f623663e"}, + {file = "yarl-1.9.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5f74b015c99a5eac5ae589de27a1201418a5d9d460e89ccb3366015c6153e60a"}, + {file = "yarl-1.9.3-cp38-cp38-win32.whl", hash = "sha256:8a2538806be846ea25e90c28786136932ec385c7ff3bc1148e45125984783dc6"}, + {file = "yarl-1.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:6465d36381af057d0fab4e0f24ef0e80ba61f03fe43e6eeccbe0056e74aadc70"}, + {file = "yarl-1.9.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2f3c8822bc8fb4a347a192dd6a28a25d7f0ea3262e826d7d4ef9cc99cd06d07e"}, + {file = "yarl-1.9.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b7831566595fe88ba17ea80e4b61c0eb599f84c85acaa14bf04dd90319a45b90"}, + {file = "yarl-1.9.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ff34cb09a332832d1cf38acd0f604c068665192c6107a439a92abfd8acf90fe2"}, + {file = "yarl-1.9.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe8080b4f25dfc44a86bedd14bc4f9d469dfc6456e6f3c5d9077e81a5fedfba7"}, + {file = "yarl-1.9.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8535e111a064f3bdd94c0ed443105934d6f005adad68dd13ce50a488a0ad1bf3"}, + {file = "yarl-1.9.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0d155a092bf0ebf4a9f6f3b7a650dc5d9a5bbb585ef83a52ed36ba46f55cc39d"}, + {file = "yarl-1.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:778df71c8d0c8c9f1b378624b26431ca80041660d7be7c3f724b2c7a6e65d0d6"}, + {file = "yarl-1.9.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b9f9cafaf031c34d95c1528c16b2fa07b710e6056b3c4e2e34e9317072da5d1a"}, + {file = "yarl-1.9.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ca6b66f69e30f6e180d52f14d91ac854b8119553b524e0e28d5291a724f0f423"}, + {file = "yarl-1.9.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e0e7e83f31e23c5d00ff618045ddc5e916f9e613d33c5a5823bc0b0a0feb522f"}, + {file = "yarl-1.9.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:af52725c7c39b0ee655befbbab5b9a1b209e01bb39128dce0db226a10014aacc"}, + {file = "yarl-1.9.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0ab5baaea8450f4a3e241ef17e3d129b2143e38a685036b075976b9c415ea3eb"}, + {file = "yarl-1.9.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6d350388ba1129bc867c6af1cd17da2b197dff0d2801036d2d7d83c2d771a682"}, + {file = "yarl-1.9.3-cp39-cp39-win32.whl", hash = "sha256:e2a16ef5fa2382af83bef4a18c1b3bcb4284c4732906aa69422cf09df9c59f1f"}, + {file = "yarl-1.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:d92d897cb4b4bf915fbeb5e604c7911021a8456f0964f3b8ebbe7f9188b9eabb"}, + {file = "yarl-1.9.3-py3-none-any.whl", hash = "sha256:271d63396460b6607b588555ea27a1a02b717ca2e3f2cf53bdde4013d7790929"}, + {file = "yarl-1.9.3.tar.gz", hash = "sha256:4a14907b597ec55740f63e52d7fee0e9ee09d5b9d57a4f399a7423268e457b57"}, +] + +[[package]] +name = "zipp" +version = "3.17.0" +requires_python = ">=3.8" +summary = "Backport of pathlib-compatible object wrapper for zip files" +files = [ + {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"}, + {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"}, +] diff --git a/pyproject.toml b/pyproject.toml index 60eabc7..d1fae92 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,22 +1,41 @@ -[tool.poetry] +[project] name = "nonebot-plugin-color" -version = "0.1.1" +dynamic = ["version"] description = "A specified color image generator for Nonebot2" -authors = ["monsterxcn "] -documentation = "https://github.com/monsterxcn/nonebot-plugin-color#readme" -license = "MIT" -homepage = "https://github.com/monsterxcn/nonebot-plugin-color" +authors = [ + { name = "monsterxcn", email = "monsterxcn@gmail.com" }, + { name = "student_2333", email = "lgc2333@126.com" }, +] +requires-python = ">=3.8,<4.0" +dependencies = [ + "nonebot2>=2.1.2", + "nonebot-plugin-alconna>=0.33.8", + "pil-utils>=0.1.8", +] readme = "README.md" keywords = ["nonebot", "nonebot2", "color"] +classifiers = [ + "Programming Language :: Python :: 3", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", +] +license = { text = "MIT" } + +[project.urls] +homepage = "https://github.com/monsterxcn/nonebot-plugin-color" +documentation = "https://github.com/monsterxcn/nonebot-plugin-color#readme" +"Bug Tracker" = "https://github.com/monsterxcn/nonebot-plugin-color/issues" + +[tool.pdm.dev-dependencies] +dev = [] -[tool.poetry.dependencies] -python = ">=3.7.3,<4.0" -nonebot2 = ">=2.0.0a14" -nonebot-adapter-onebot = ">=2.0.0b1" -Pillow = ">=8.2.0" +[tool.pdm.version] +source = "file" +path = "nonebot_plugin_color/__init__.py" -[tool.poetry.dev-dependencies] +[tool.pdm.build] +includes = [] [build-system] -requires = ["poetry-core>=1.0.0"] -build-backend = "poetry.core.masonry.api" \ No newline at end of file +requires = ["pdm-backend"] +build-backend = "pdm.backend" diff --git a/res/screenshot.png b/res/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..cf9b78432349870d0fc9299d7f6512457d2ed71c GIT binary patch literal 27842 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 Mikb>#a&H6v3lREFcmMzZ literal 0 HcmV?d00001 diff --git a/screenshot.png b/screenshot.png deleted file mode 100644 index a84f76edacae027f972db28ed88228d11febf991..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6076 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 diff --git a/setup.py b/setup.py deleted file mode 100644 index 230d61c..0000000 --- a/setup.py +++ /dev/null @@ -1,30 +0,0 @@ -import setuptools - -with open("README.md", "r", encoding="utf-8") as fh: - long_description = fh.read() - -setuptools.setup( - name="nonebot-plugin-color", - version="0.1.1", - author="monsterxcn", - author_email="monsterxcn@gmail.com", - description="A specified color image generator for Nonebot2", - long_description=long_description, - long_description_content_type="text/markdown", - url="https://github.com/monsterxcn/nonebot-plugin-color", - project_urls={ - "Bug Tracker": "https://github.com/monsterxcn/nonebot-plugin-color/issues", - }, - classifiers=[ - "Programming Language :: Python :: 3", - "License :: OSI Approved :: MIT License", - "Operating System :: OS Independent", - ], - packages=['nonebot-plugin-color'], - python_requires=">=3.7.3,<4.0", - install_requires=[ - 'nonebot2>=2.0.0a14', - 'nonebot-adapter-onebot>=2.0.0b1', - 'Pillow>=8.2.0' - ], -) \ No newline at end of file From fa6bfab0bac6cc392f3f93061261c6747de4b4a3 Mon Sep 17 00:00:00 2001 From: student_2333 Date: Thu, 30 Nov 2023 01:11:55 +0800 Subject: [PATCH 2/6] del wakatime --- README.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/README.md b/README.md index a2e1340..e38245b 100644 --- a/README.md +++ b/README.md @@ -18,9 +18,6 @@ _✨ 用于生成指定色彩图片的 NoneBot2 插件 ✨_ pdm-managed - - wakatime -
From dd94cc151da465ee1f338792494a551b68852c0c Mon Sep 17 00:00:00 2001 From: student_2333 Date: Thu, 30 Nov 2023 01:23:13 +0800 Subject: [PATCH 3/6] fix --- nonebot_plugin_color/__main__.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/nonebot_plugin_color/__main__.py b/nonebot_plugin_color/__main__.py index d96ba93..29beaf6 100644 --- a/nonebot_plugin_color/__main__.py +++ b/nonebot_plugin_color/__main__.py @@ -30,10 +30,16 @@ def parse_color(color: str) -> Optional[Color]: return Color(COLOR_CHINESE_NAME_MAP[color]) # old `r g b` format compatibility - with suppress(ValueError): + with suppress(ColorError, ValueError): splitted = color.split() if 3 <= len(splitted) <= 4: - return Color(splitted) # type: ignore + r, g, b = map(int, splitted[:3]) + a = ( + (a if (a := float(splitted[3])) < 1 else a / 255) + if len(splitted) == 4 + else None + ) + return Color((r, g, b) if a is None else (r, g, b, a)) return None From cbcbc923082d9e12e40c0a1bb61729a03600810b Mon Sep 17 00:00:00 2001 From: student_2333 Date: Thu, 30 Nov 2023 01:29:51 +0800 Subject: [PATCH 4/6] auto scale title --- nonebot_plugin_color/data_source.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/nonebot_plugin_color/data_source.py b/nonebot_plugin_color/data_source.py index 29e6400..384aa79 100644 --- a/nonebot_plugin_color/data_source.py +++ b/nonebot_plugin_color/data_source.py @@ -17,7 +17,7 @@ IMG_SIZE = 256 TITLE_FONT_SIZE = 48 SUB_FONT_SIZE = 24 -HAS_ALPHA_SIZE_MULTIPLIER = 0.75 +SMALL_SIZE_MULTIPLIER = 0.75 def reverse_color(rgb: RGBColorTuple) -> RGBColorTuple: @@ -41,12 +41,17 @@ async def generate_image(color: Color) -> BytesIO: has_alpha = len(pydantic_color) == 4 sub_size = SUB_FONT_SIZE if has_alpha: - sub_size = round(sub_size * HAS_ALPHA_SIZE_MULTIPLIER) + sub_size = round(sub_size * SMALL_SIZE_MULTIPLIER) build = partial(Text2Image.from_text, fill=text_color, fontname=font_name) hex_text = build(color.as_hex(), TITLE_FONT_SIZE) rgb_text = build(color.as_rgb(), sub_size) hsl_text = build(color.as_hsl(), sub_size) + if hex_text.width > IMG_SIZE: + hex_text = build( + color.as_hex(), + round(TITLE_FONT_SIZE * SMALL_SIZE_MULTIPLIER), + ) gap_size = round( ( From 7e8d72e90337b7ac51e71e647a199f1173758f2b Mon Sep 17 00:00:00 2001 From: student_2333 Date: Thu, 30 Nov 2023 01:58:22 +0800 Subject: [PATCH 5/6] complete chinese color table --- nonebot_plugin_color/const.py | 70 +++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/nonebot_plugin_color/const.py b/nonebot_plugin_color/const.py index cc7856d..2cfbd27 100644 --- a/nonebot_plugin_color/const.py +++ b/nonebot_plugin_color/const.py @@ -1,9 +1,61 @@ COLOR_CHINESE_NAME_MAP = { "爱丽丝蓝": "aliceblue", "古董白": "antiquewhite", + "水绿": "aqua", + "碧绿": "aquamarine", + "蔚蓝": "azure", + "米": "beige", + "桔黄": "bisque", + "黑": "black", + "杏仁白": "blanchedalmond", + "蓝": "blue", + "蓝紫": "blueviolet", + "棕": "brown", + "实木": "burlywood", + "军服蓝": "cadetblue", + "查特酒绿": "chartreuse", + "巧克力": "chocolate", + "珊瑚红": "coral", + "矢车菊蓝": "cornflowerblue", + "米绸": "cornsilk", + "猩红": "crimson", + "青": "cyan", + "深蓝": "darkblue", + "深青": "darkcyan", + "暗金黄": "darkgoldenrod", + "深灰": "darkgray", + "深绿": "darkgreen", + "深卡其布": "darkkhaki", + "深洋红": "darkmagenta", + "深橄榄绿": "darkolivegreen", + "深橙": "darkorange", + "暗紫": "darkorchid", + "深红": "darkred", + "深鲑鱼肉": "darksalmon", + "深海绿": "darkseagreen", + "深石板灰": "darkslateblue", + "墨绿": "darkslategray", + "深绿宝石": "darkturquoise", + "深紫罗兰": "darkviolet", + "深粉红": "deeppink", + "深天蓝": "deepskyblue", + "暗灰": "dimgray", + "道奇蓝": "dodgerblue", + "耐火砖": "firebrick", + "花白": "floralwhite", + "森林绿": "forestgreen", + "紫红": "fuchsia", + "亮灰": "gainsboro", + "幽灵白": "ghostwhite", + "金": "gold", + "金麒麟": "goldenrod", + "灰": "gray", + "绿": "green", + "绿黄": "greenyellow", "蜜瓜": "honeydew", "热粉红": "hotpink", "印度红": "indianred", + "靛蓝": "indigo", "靛青": "indigo", "象牙": "ivory", "黄褐": "khaki", @@ -90,3 +142,21 @@ "黄": "yellow", "黄绿": "yellowgreen", } + + +if __name__ == "__main__": + from pydantic.color import COLORS_BY_NAME + + nf = 0 + print("{") + for color in COLORS_BY_NAME: + if color.endswith("grey"): + continue + cns = tuple(k for k, v in COLOR_CHINESE_NAME_MAP.items() if v == color) + if not cns: + nf += 1 + cn = ",".join(cns) if cns else None + print(f' "{cn}": "{color}",') + print("}") + + print(f"not found: {nf}") From 3dd6b7e9216db94b6d00c341cb67f6325af5ca4e Mon Sep 17 00:00:00 2001 From: student_2333 Date: Thu, 30 Nov 2023 02:04:25 +0800 Subject: [PATCH 6/6] improve readability of text on gray background --- nonebot_plugin_color/data_source.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/nonebot_plugin_color/data_source.py b/nonebot_plugin_color/data_source.py index 384aa79..10b6981 100644 --- a/nonebot_plugin_color/data_source.py +++ b/nonebot_plugin_color/data_source.py @@ -21,6 +21,8 @@ def reverse_color(rgb: RGBColorTuple) -> RGBColorTuple: + if all(abs(x - 128) < 16 for x in rgb): + return (0, 0, 0) return cast(RGBColorTuple, tuple(255 - i for i in rgb))