├── .gitignore ├── nonebot_plugin_record ├── config.py ├── baidu.py ├── __init__.py └── tencent.py ├── pyproject.toml ├── LICENSE ├── README.md └── poetry.lock /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | dist -------------------------------------------------------------------------------- /nonebot_plugin_record/config.py: -------------------------------------------------------------------------------- 1 | from nonebot import get_driver 2 | 3 | from typing import Optional 4 | from pydantic import ( 5 | BaseModel, 6 | Extra 7 | ) 8 | 9 | 10 | class Config(BaseModel, extra=Extra.ignore): 11 | nonebot_plugin_gocqhttp: Optional[bool] = False 12 | gocqhttp_address: Optional[str] = './' 13 | asr_api_provider: str = None 14 | asr_api_key: str = None 15 | asr_secret_key: str = None 16 | 17 | 18 | plugin_config = Config.parse_obj(get_driver().config.dict()) 19 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "nonebot-plugin-record" 3 | version = "1.0.5" 4 | description = "基于 Nonebot2 的语音功能适配插件,包括语音事件响应器,语音识别、语音合成等功能" 5 | authors = ["ITSevin "] 6 | license = "MIT" 7 | readme = "README.md" 8 | homepage = "https://github.com/itsevin/nonebot_plugin_record" 9 | repository = "https://github.com/itsevin/nonebot_plugin_record" 10 | documentation = "https://github.com/itsevin/nonebot_plugin_record#readme" 11 | keywords = ["nonebot", "nonebot2", "nonebot_plugin_record"] 12 | packages = [{include = "nonebot_plugin_record/*.py"}] 13 | 14 | 15 | [tool.poetry.dependencies] 16 | python = "^3.8" 17 | nonebot2 = "^2.0.0-beta.1" 18 | nonebot-adapter-onebot = "^2.0.0-beta.1" 19 | pilk = "^0.2.3" 20 | httpx = "^0.23.3" 21 | 22 | 23 | [build-system] 24 | requires = ["poetry-core>=1.0.0"] 25 | build-backend = "poetry.core.masonry.api" 26 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Sevin 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /nonebot_plugin_record/baidu.py: -------------------------------------------------------------------------------- 1 | from nonebot import logger 2 | import httpx 3 | import json 4 | 5 | from .config import plugin_config 6 | 7 | 8 | API_KEY = plugin_config.asr_api_key 9 | SECRET_KEY = plugin_config.asr_secret_key 10 | 11 | 12 | async def _get_token(): 13 | url = f'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={API_KEY}&client_secret=' \ 14 | f'{SECRET_KEY}' 15 | async with httpx.AsyncClient() as client: 16 | resp = await client.get(url) 17 | token = json.loads(resp.text)["access_token"] 18 | logger.debug("get_token Succeeded") 19 | return token 20 | 21 | 22 | async def baidu_get_text(speech, length): 23 | url = "https://vop.baidu.com/server_api" 24 | data = { 25 | "format": "pcm", 26 | "rate": 16000, 27 | "channel": 1, 28 | "cuid": "nonebot_plugin_record", 29 | "speech": speech, 30 | "len": length, 31 | "token": await _get_token() 32 | } 33 | headers = { 34 | 'Content-Type': 'application/json', 35 | 'Accept': 'application/json' 36 | } 37 | async with httpx.AsyncClient() as client: 38 | try: 39 | resp = await client.post(url, headers=headers, json=data) 40 | if json.loads(resp.text)["err_msg"] == "success.": 41 | text = json.loads(resp.text)["result"][0] 42 | logger.debug("baidu_get_text Succeeded") 43 | return text 44 | else: 45 | logger.error(f"语音识别接口报错,返回内容:{resp.text}") 46 | return None 47 | except: 48 | logger.error("请求语音识别接口失败,请检查网络环境或重试") 49 | return None 50 | -------------------------------------------------------------------------------- /nonebot_plugin_record/__init__.py: -------------------------------------------------------------------------------- 1 | from nonebot.matcher import Matcher 2 | from nonebot.rule import Rule 3 | from nonebot.typing import T_RuleChecker 4 | from nonebot import ( 5 | on_message, 6 | logger 7 | ) 8 | from nonebot.adapters.onebot.v11 import ( 9 | Message, 10 | Event, 11 | Bot, 12 | MessageSegment 13 | ) 14 | 15 | import base64 16 | import pilk 17 | import os 18 | from typing import ( 19 | Type, 20 | Union, 21 | Optional 22 | ) 23 | 24 | from .config import plugin_config 25 | from .baidu import baidu_get_text 26 | from .tencent import tencent_get_text 27 | 28 | 29 | async def type_checker(event: Event) -> bool: 30 | """判断消息类型为语音的规则。 31 | 32 | 依赖参数: 33 | 34 | - event: Event 对象 35 | """ 36 | return event.get_message()[0].type == "record" 37 | 38 | 39 | def on_record( 40 | rule: Optional[Union[Rule, T_RuleChecker]] = None, 41 | **kwargs, 42 | ) -> Type[Matcher]: 43 | """注册一个语音事件响应器。 44 | 45 | 参数: 46 | rule: 事件响应规则 47 | permission: 事件响应权限 48 | handlers: 事件处理函数列表 49 | temp: 是否为临时事件响应器(仅执行一次) 50 | expire_time: 事件响应器最终有效时间点,过时即被删除 51 | priority: 事件响应器优先级 52 | block: 是否阻止事件向更低优先级传递 53 | state: 默认 state 54 | """ 55 | logger.debug("Starting To Register The Voice Event Responder") 56 | return on_message(rule=Rule(type_checker) & rule, **kwargs) 57 | 58 | 59 | async def get_text(bot: Bot, event: Event): 60 | """通过语音识别获取语音中的文本,仅支持普通话。 61 | 62 | 依赖参数: 63 | 64 | - bot: Bot 对象 65 | - event: Event 对象 66 | """ 67 | if plugin_config.nonebot_plugin_gocqhttp is True: 68 | path_amr = "./accounts/" + bot.self_id + "/data/voices/" + event.get_message()[0].data["file"] 69 | else: 70 | path_amr = plugin_config.gocqhttp_address + "data/voices/" + event.get_message()[0].data["file"] 71 | path_pcm = path_amr[0:-4] + ".pcm" 72 | try: 73 | pilk.decode(path_amr, path_pcm) 74 | except OSError: 75 | logger.error("转换音频文件失败,尝试转换的音频文件目录为 " + path_amr + " ,请检查nonebot_plugin_gocqhttp配置项和gocqhttp_address配置项是否正确填写或是否有文件权限问题") 76 | return None 77 | except: 78 | logger.error("转换音频文件失败,发生未知错误") 79 | return None 80 | else: 81 | logger.debug("Successfully Transform The Audio file") 82 | with open(path_pcm, 'rb') as f: 83 | speech = base64.b64encode(f.read()).decode('utf-8') 84 | length = os.path.getsize(path_pcm) 85 | os.remove(path_pcm) 86 | if length == 0: 87 | logger.error("转换音频文件成功,但加载音频文件失败,发生未知错误") 88 | return None 89 | else: 90 | logger.debug("Successfully Load The Audio file") 91 | if plugin_config.asr_api_provider == "baidu": 92 | logger.debug("Using Baidu API") 93 | text = await baidu_get_text(speech, length) 94 | return text 95 | elif plugin_config.asr_api_provider == "tencent": 96 | logger.debug("Using Tencent API") 97 | text = await tencent_get_text(speech, length) 98 | return text 99 | elif plugin_config.asr_api_provider == None: 100 | logger.error("获取配置失败,请检查asr_api_provider配置项是否正确填写") 101 | return None 102 | else: 103 | logger.error("配置填写错误,asr_api_provider配置只能填写“baidu”或“tencent”") 104 | return None 105 | 106 | 107 | def record_tts(pattern: str): 108 | """获取字符串转换的语音的Message对象。 109 | 调用的TX的接口,采用的音源与登录账号的性别有关 110 | 111 | 参数: 112 | pattern: 要进行转换的字符串 113 | """ 114 | logger.debug("Starting To Retrieve TTS (Text-to-Speech) Message Object") 115 | return MessageSegment("tts", {"text": pattern}) 116 | -------------------------------------------------------------------------------- /nonebot_plugin_record/tencent.py: -------------------------------------------------------------------------------- 1 | from nonebot import logger 2 | from datetime import datetime 3 | import httpx 4 | import hashlib 5 | import hmac 6 | import json 7 | import time 8 | 9 | from .config import plugin_config 10 | 11 | 12 | secret_id = plugin_config.asr_api_key 13 | secret_key = plugin_config.asr_secret_key 14 | 15 | 16 | async def _get_authorization(params): 17 | service = "asr" 18 | host = "asr.tencentcloudapi.com" 19 | algorithm = "TC3-HMAC-SHA256" 20 | timestamp = int(time.time()) 21 | date = datetime.utcfromtimestamp(timestamp).strftime("%Y-%m-%d") 22 | 23 | # ************* 步骤 1:拼接规范请求串 ************* 24 | http_request_method = "POST" 25 | canonical_uri = "/" 26 | canonical_querystring = "" 27 | ct = "application/json; charset=utf-8" 28 | payload = json.dumps(params) 29 | canonical_headers = "content-type:%s\nhost:%s\n" % (ct, host) 30 | signed_headers = "content-type;host" 31 | hashed_request_payload = hashlib.sha256(payload.encode("utf-8")).hexdigest() 32 | canonical_request = (http_request_method + "\n" + 33 | canonical_uri + "\n" + 34 | canonical_querystring + "\n" + 35 | canonical_headers + "\n" + 36 | signed_headers + "\n" + 37 | hashed_request_payload) 38 | 39 | # ************* 步骤 2:拼接待签名字符串 ************* 40 | credential_scope = date + "/" + service + "/" + "tc3_request" 41 | hashed_canonical_request = hashlib.sha256(canonical_request.encode("utf-8")).hexdigest() 42 | string_to_sign = (algorithm + "\n" + 43 | str(timestamp) + "\n" + 44 | credential_scope + "\n" + 45 | hashed_canonical_request) 46 | 47 | # ************* 步骤 3:计算签名 ************* 48 | # 计算签名摘要函数 49 | async def _sign(key, msg): 50 | return hmac.new(key, msg.encode("utf-8"), hashlib.sha256).digest() 51 | secret_date = await _sign(("TC3" + secret_key).encode("utf-8"), date) 52 | secret_service = await _sign(secret_date, service) 53 | secret_signing = await _sign(secret_service, "tc3_request") 54 | signature = hmac.new(secret_signing, string_to_sign.encode("utf-8"), hashlib.sha256).hexdigest() 55 | 56 | # ************* 步骤 4:拼接 Authorization ************* 57 | authorization = (algorithm + " " + 58 | "Credential=" + secret_id + "/" + credential_scope + ", " + 59 | "SignedHeaders=" + signed_headers + ", " + 60 | "Signature=" + signature) 61 | logger.debug("get_authorization Succeeded") 62 | return authorization 63 | 64 | 65 | async def tencent_get_text(speech, length): 66 | timestamp = int(time.time()) 67 | url = "https://asr.tencentcloudapi.com" 68 | data = { 69 | "ProjectId": 0, 70 | "SubServiceType": 2, 71 | "EngSerViceType": "16k_zh", 72 | "SourceType": 1, 73 | "VoiceFormat": "pcm", 74 | "UsrAudioKey": "github.com/itsevin", 75 | "Data": speech, 76 | "DataLen": length 77 | } 78 | headers = { 79 | "Authorization": await _get_authorization(data), 80 | "Content-Type": "application/json; charset=utf-8", 81 | "Host": "asr.tencentcloudapi.com", 82 | "X-TC-Action": "SentenceRecognition", 83 | "X-TC-Version": "2019-06-14", 84 | "X-TC-Timestamp": str(timestamp), 85 | } 86 | async with httpx.AsyncClient() as client: 87 | try: 88 | resp = await client.post(url, headers=headers, json=data) 89 | if "error" not in json.loads(resp.text)["Response"]: 90 | text = json.loads(resp.text)["Response"]["Result"] 91 | logger.debug("tencent_get_text Succeeded") 92 | return text 93 | else: 94 | logger.error(f"语音识别接口报错,返回内容:{resp.text}") 95 | return None 96 | except: 97 | logger.error("请求语音识别接口失败,请检查网络环境或重试") 98 | return None -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | NoneBotPluginLogo 3 |
4 |

NoneBotPluginText

5 |
6 | 7 |
8 | 9 | # Nonebot-Plugin-Record 10 | 11 | _✨ 基于 [NoneBot2](https://v2.nonebot.dev/) 的语音功能适配插件 ✨_ 12 | 13 |

14 | license 15 | Python 16 | NoneBot 17 | 18 | pypi 19 | 20 |

21 | 22 |
23 | 24 | ## 功能 25 | 26 | - 语音事件响应器(仅限私聊) 27 | - 语音识别(仅限私聊,支持百度智能云、腾讯云接口) 28 | - 语音合成(利用TX的tts接口) 29 | 30 | ## 安装 31 | 32 | - 使用 nb-cli 33 | 34 | ``` 35 | nb plugin install nonebot-plugin-record 36 | ``` 37 | 38 | - 使用 pip 39 | 40 | ``` 41 | pip install nonebot_plugin_record 42 | ``` 43 | 44 | ## 兼容性 45 | 46 | ### 支持的go-cqhttp(最新版本)协议 47 | 48 | | | | | | 49 | | ---- | ---- | ---- | ---- | 50 | | protocol | 协议 | 收语音 | 发语音 | 51 | | 1 | phone | 未知 | 未知 | 52 | | 2 | watch | 不兼容 | 兼容 | 53 | | 3 | MacOS | 兼容 | 不兼容 | 54 | | 4 | 企点 | 未知 | 未知 | 55 | | 5 | iPad | 兼容 | 兼容 | 56 | | 6 | aPad | 兼容 | 不兼容 | 57 | 58 | 59 | > 未知是未测试的情况;不兼容是没通过我的测试的情况,不一定准确,可能是我自己账号的封控问题,具体请自行测试 60 | 61 | 发现实际与我测试结果有出入的欢迎来这里讨论 https://github.com/itsevin/nonebot_plugin_record/issues/1 62 | 63 | ## 配置项 64 | 65 | ``` 66 | asr_api_provider="" # 必填,API提供商,填写“baidu”或“tencent” 67 | asr_api_key="" # 必填,百度智能云的API_KRY或腾讯云的SECRET_ID 68 | asr_secret_key="" # 必填,百度智能云的SECRET_KRY或腾讯云的SECRET_KEY 69 | nonebot_plugin_gocqhttp=False # 选填,是否使用nonebot2插件版本的go-cqhttp,默认为False 70 | gocqhttp_address="./" # 选填,非插件版本go-cqhttp的运行目录,默认为“./”,非插件版本go-cqhttp和nonebot运行目录不同时须填写,插件版本不用填写, nonebot_plugin_gocqhttp=True 时该配置无效 71 | ``` 72 | 73 | > gocqhttp_address 配置项可填绝对路径(如 /root/gocqhttp/ )或相对路径(如 ../../gocqhttp/ ) 74 | 75 | ## API选择与配置 76 | 77 | ### 选什么API? 78 | 79 | - 百度智能云-短语音识别标准版:5并发,15万次免费调用量,期限180天 80 | - 腾讯云-一句话识别:每月5000次免费调用量(推荐) 81 | 82 | ### 获取密钥 83 | 84 | - 百度智能云:https://ai.baidu.com/tech/speech 85 | - 腾讯云:https://cloud.tencent.com/document/product/1093 86 | 87 | ## 如何使用? 88 | 89 | ### 语音事件响应器的使用 90 | 91 | 语音事件响应器:```on_record()``` 92 | 93 | 说明:语音事件响应器继承自```on_message```,在其上增加了自定义的相应事件响应规则 94 | 95 | 选填参数: 96 | 97 | ``` 98 | rule: 事件响应规则 99 | permission: 事件响应权限 100 | handlers: 事件处理函数列表 101 | temp: 是否为临时事件响应器(仅执行一次) 102 | expire_time: 事件响应器最终有效时间点,过时即被删除 103 | priority: 事件响应器优先级 104 | block: 是否阻止事件向更低优先级传递 105 | state: 默认 state 106 | ``` 107 | 108 | 代码示例: 109 | 110 | ```python 111 | # 导入依赖包 112 | from nonebot import require 113 | require('nonebot_plugin_record') 114 | from nonebot_plugin_record import on_record 115 | 116 | # 注册语音事件响应器 117 | matcher = on_record() 118 | ``` 119 | 120 | ### 获取语音中的文本 121 | 122 | 获取文本的异步函数:```get_text```() 123 | 124 | 必填参数: 125 | 126 | ``` 127 | bot: Bot 对象 128 | event: Event 对象 129 | ``` 130 | 131 | 代码示例: 132 | 133 | ```python 134 | # 导入依赖包 135 | from nonebot import require 136 | require('nonebot_plugin_record') 137 | from nonebot_plugin_record import get_text 138 | from nonebot.adapters.onebot.v11 import Event, Bot 139 | 140 | # 事件处理中获取文本 141 | text = await get_text(bot=bot, event=event) 142 | ``` 143 | 144 | > 当函数出错时会返回None,具体报错信息请前往Nonebot2进程日志查看 145 | 146 | ### 获取文本转换的语音的```Message```对象 147 | 148 | 获取文本转换的语音的Message对象的异步函数:```record_tts```() 149 | 150 | 必填参数: 151 | ``` 152 | patter: 要进行转换的字符串 153 | ``` 154 | 155 | 代码示例: 156 | 157 | ```python 158 | # 导入依赖包 159 | from nonebot import require 160 | require('nonebot_plugin_record') 161 | from nonebot_plugin_record import record_tts 162 | 163 | # 事件处理中获取文本转换的语音的Message对象 164 | record_tts(pattern=pattern) 165 | ``` 166 | 167 | ### 插件示例 168 | 169 | 私聊语音聊天插件: 170 | 171 | ```python 172 | from nonebot.adapters.onebot.v11 import ( 173 | Event, 174 | Bot 175 | ) 176 | from nonebot import require 177 | require('nonebot_plugin_record') 178 | from nonebot_plugin_record import ( 179 | on_record, 180 | get_text, 181 | record_tts 182 | ) 183 | 184 | import httpx 185 | import json 186 | 187 | 188 | chat = on_record() 189 | 190 | 191 | @chat.handle() 192 | async def main(bot: Bot, event: Event): 193 | text = await get_text(bot, event) 194 | msg = await get_data(text) 195 | await chat.finish(record_tts(msg)) 196 | 197 | 198 | async def get_data(msg): 199 | url = f'http://api.qingyunke.com/api.php?key=free&appid=0&msg={msg}' 200 | async with httpx.AsyncClient() as client: 201 | resp = await client.get(url) 202 | get_dic = json.loads(resp.text) 203 | data = get_dic['content'] 204 | return data 205 | 206 | ``` 207 | 208 | ## 有问题怎么办? 209 | 210 | 1. 确认是不是你自己的插件的问题 211 | 2. 确认是否正确按照本插件使用说明使用 212 | 3. 排查日志,通过日志内容尝试找出问题并自行解决 213 | 4. 在配置文件中配置```LOG_LEVEL=DEBUG```,然后在日志中查看debug日志,并同时根据本插件源码尝试找出问题并自行解决(确认是本插件的问题可以提issue或者pr) 214 | 5. 问题仍未解决可以提issue,要求提供详细问题描述和较为完整的debug级别的相关日志 215 | 216 | ## 更新日志 217 | 218 | ### 2023/6/9 \[v1.0.5] 219 | 220 | - 修复非插件版本go-cqhttp和nonebot运行目录不相同时的问题 221 | - 优化日志输出 222 | 223 | ### 2023/5/13 \[v1.0.4] 224 | 225 | - 重构代码,舍弃CQ码过时写法 226 | - 增加dubug和info级别的日志输出 227 | 228 | ### 2023/1/27 \[v1.0.3] 229 | 230 | - 修复错误 231 | 232 | ### 2023/1/15 \[v1.0.2] 233 | 234 | - 修复错误 235 | 236 | ### 2023/1/15 \[v1.0.1] 237 | 238 | - 适配Nonebot2商店插件自动检测,删除配置文件报错提醒 239 | 240 | ### 2023/1/15 \[v1.0.0] 241 | 242 | - 发布插件 243 | -------------------------------------------------------------------------------- /poetry.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Poetry and should not be changed by hand. 2 | 3 | [[package]] 4 | name = "anyio" 5 | version = "3.6.2" 6 | description = "High level compatibility layer for multiple asynchronous event loop implementations" 7 | category = "main" 8 | optional = false 9 | python-versions = ">=3.6.2" 10 | files = [ 11 | {file = "anyio-3.6.2-py3-none-any.whl", hash = "sha256:fbbe32bd270d2a2ef3ed1c5d45041250284e31fc0a4df4a5a6071842051a51e3"}, 12 | {file = "anyio-3.6.2.tar.gz", hash = "sha256:25ea0d673ae30af41a0c442f81cf3b38c7e79fdc7b60335a4c14e05eb0947421"}, 13 | ] 14 | 15 | [package.dependencies] 16 | idna = ">=2.8" 17 | sniffio = ">=1.1" 18 | 19 | [package.extras] 20 | doc = ["packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] 21 | test = ["contextlib2", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (<0.15)", "uvloop (>=0.15)"] 22 | trio = ["trio (>=0.16,<0.22)"] 23 | 24 | [[package]] 25 | name = "certifi" 26 | version = "2022.12.7" 27 | description = "Python package for providing Mozilla's CA Bundle." 28 | category = "main" 29 | optional = false 30 | python-versions = ">=3.6" 31 | files = [ 32 | {file = "certifi-2022.12.7-py3-none-any.whl", hash = "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"}, 33 | {file = "certifi-2022.12.7.tar.gz", hash = "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3"}, 34 | ] 35 | 36 | [[package]] 37 | name = "colorama" 38 | version = "0.4.6" 39 | description = "Cross-platform colored terminal text." 40 | category = "main" 41 | optional = false 42 | python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" 43 | files = [ 44 | {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, 45 | {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, 46 | ] 47 | 48 | [[package]] 49 | name = "h11" 50 | version = "0.14.0" 51 | description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" 52 | category = "main" 53 | optional = false 54 | python-versions = ">=3.7" 55 | files = [ 56 | {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, 57 | {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, 58 | ] 59 | 60 | [[package]] 61 | name = "httpcore" 62 | version = "0.16.3" 63 | description = "A minimal low-level HTTP client." 64 | category = "main" 65 | optional = false 66 | python-versions = ">=3.7" 67 | files = [ 68 | {file = "httpcore-0.16.3-py3-none-any.whl", hash = "sha256:da1fb708784a938aa084bde4feb8317056c55037247c787bd7e19eb2c2949dc0"}, 69 | {file = "httpcore-0.16.3.tar.gz", hash = "sha256:c5d6f04e2fc530f39e0c077e6a30caa53f1451096120f1f38b954afd0b17c0cb"}, 70 | ] 71 | 72 | [package.dependencies] 73 | anyio = ">=3.0,<5.0" 74 | certifi = "*" 75 | h11 = ">=0.13,<0.15" 76 | sniffio = ">=1.0.0,<2.0.0" 77 | 78 | [package.extras] 79 | http2 = ["h2 (>=3,<5)"] 80 | socks = ["socksio (>=1.0.0,<2.0.0)"] 81 | 82 | [[package]] 83 | name = "httpx" 84 | version = "0.23.3" 85 | description = "The next generation HTTP client." 86 | category = "main" 87 | optional = false 88 | python-versions = ">=3.7" 89 | files = [ 90 | {file = "httpx-0.23.3-py3-none-any.whl", hash = "sha256:a211fcce9b1254ea24f0cd6af9869b3d29aba40154e947d2a07bb499b3e310d6"}, 91 | {file = "httpx-0.23.3.tar.gz", hash = "sha256:9818458eb565bb54898ccb9b8b251a28785dd4a55afbc23d0eb410754fe7d0f9"}, 92 | ] 93 | 94 | [package.dependencies] 95 | certifi = "*" 96 | httpcore = ">=0.15.0,<0.17.0" 97 | rfc3986 = {version = ">=1.3,<2", extras = ["idna2008"]} 98 | sniffio = "*" 99 | 100 | [package.extras] 101 | brotli = ["brotli", "brotlicffi"] 102 | cli = ["click (>=8.0.0,<9.0.0)", "pygments (>=2.0.0,<3.0.0)", "rich (>=10,<13)"] 103 | http2 = ["h2 (>=3,<5)"] 104 | socks = ["socksio (>=1.0.0,<2.0.0)"] 105 | 106 | [[package]] 107 | name = "idna" 108 | version = "3.4" 109 | description = "Internationalized Domain Names in Applications (IDNA)" 110 | category = "main" 111 | optional = false 112 | python-versions = ">=3.5" 113 | files = [ 114 | {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, 115 | {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, 116 | ] 117 | 118 | [[package]] 119 | name = "loguru" 120 | version = "0.6.0" 121 | description = "Python logging made (stupidly) simple" 122 | category = "main" 123 | optional = false 124 | python-versions = ">=3.5" 125 | files = [ 126 | {file = "loguru-0.6.0-py3-none-any.whl", hash = "sha256:4e2414d534a2ab57573365b3e6d0234dfb1d84b68b7f3b948e6fb743860a77c3"}, 127 | {file = "loguru-0.6.0.tar.gz", hash = "sha256:066bd06758d0a513e9836fd9c6b5a75bfb3fd36841f4b996bc60b547a309d41c"}, 128 | ] 129 | 130 | [package.dependencies] 131 | colorama = {version = ">=0.3.4", markers = "sys_platform == \"win32\""} 132 | win32-setctime = {version = ">=1.0.0", markers = "sys_platform == \"win32\""} 133 | 134 | [package.extras] 135 | dev = ["Sphinx (>=4.1.1)", "black (>=19.10b0)", "colorama (>=0.3.4)", "docutils (==0.16)", "flake8 (>=3.7.7)", "isort (>=5.1.1)", "pytest (>=4.6.2)", "pytest-cov (>=2.7.1)", "sphinx-autobuild (>=0.7.1)", "sphinx-rtd-theme (>=0.4.3)", "tox (>=3.9.0)"] 136 | 137 | [[package]] 138 | name = "msgpack" 139 | version = "1.0.4" 140 | description = "MessagePack serializer" 141 | category = "main" 142 | optional = false 143 | python-versions = "*" 144 | files = [ 145 | {file = "msgpack-1.0.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4ab251d229d10498e9a2f3b1e68ef64cb393394ec477e3370c457f9430ce9250"}, 146 | {file = "msgpack-1.0.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:112b0f93202d7c0fef0b7810d465fde23c746a2d482e1e2de2aafd2ce1492c88"}, 147 | {file = "msgpack-1.0.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:002b5c72b6cd9b4bafd790f364b8480e859b4712e91f43014fe01e4f957b8467"}, 148 | {file = "msgpack-1.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35bc0faa494b0f1d851fd29129b2575b2e26d41d177caacd4206d81502d4c6a6"}, 149 | {file = "msgpack-1.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4733359808c56d5d7756628736061c432ded018e7a1dff2d35a02439043321aa"}, 150 | {file = "msgpack-1.0.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb514ad14edf07a1dbe63761fd30f89ae79b42625731e1ccf5e1f1092950eaa6"}, 151 | {file = "msgpack-1.0.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c23080fdeec4716aede32b4e0ef7e213c7b1093eede9ee010949f2a418ced6ba"}, 152 | {file = "msgpack-1.0.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:49565b0e3d7896d9ea71d9095df15b7f75a035c49be733051c34762ca95bbf7e"}, 153 | {file = "msgpack-1.0.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:aca0f1644d6b5a73eb3e74d4d64d5d8c6c3d577e753a04c9e9c87d07692c58db"}, 154 | {file = "msgpack-1.0.4-cp310-cp310-win32.whl", hash = "sha256:0dfe3947db5fb9ce52aaea6ca28112a170db9eae75adf9339a1aec434dc954ef"}, 155 | {file = "msgpack-1.0.4-cp310-cp310-win_amd64.whl", hash = "sha256:4dea20515f660aa6b7e964433b1808d098dcfcabbebeaaad240d11f909298075"}, 156 | {file = "msgpack-1.0.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e83f80a7fec1a62cf4e6c9a660e39c7f878f603737a0cdac8c13131d11d97f52"}, 157 | {file = "msgpack-1.0.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c11a48cf5e59026ad7cb0dc29e29a01b5a66a3e333dc11c04f7e991fc5510a9"}, 158 | {file = "msgpack-1.0.4-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1276e8f34e139aeff1c77a3cefb295598b504ac5314d32c8c3d54d24fadb94c9"}, 159 | {file = "msgpack-1.0.4-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c9566f2c39ccced0a38d37c26cc3570983b97833c365a6044edef3574a00c08"}, 160 | {file = "msgpack-1.0.4-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:fcb8a47f43acc113e24e910399376f7277cf8508b27e5b88499f053de6b115a8"}, 161 | {file = "msgpack-1.0.4-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:76ee788122de3a68a02ed6f3a16bbcd97bc7c2e39bd4d94be2f1821e7c4a64e6"}, 162 | {file = "msgpack-1.0.4-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:0a68d3ac0104e2d3510de90a1091720157c319ceeb90d74f7b5295a6bee51bae"}, 163 | {file = "msgpack-1.0.4-cp36-cp36m-win32.whl", hash = "sha256:85f279d88d8e833ec015650fd15ae5eddce0791e1e8a59165318f371158efec6"}, 164 | {file = "msgpack-1.0.4-cp36-cp36m-win_amd64.whl", hash = "sha256:c1683841cd4fa45ac427c18854c3ec3cd9b681694caf5bff04edb9387602d661"}, 165 | {file = "msgpack-1.0.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a75dfb03f8b06f4ab093dafe3ddcc2d633259e6c3f74bb1b01996f5d8aa5868c"}, 166 | {file = "msgpack-1.0.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9667bdfdf523c40d2511f0e98a6c9d3603be6b371ae9a238b7ef2dc4e7a427b0"}, 167 | {file = "msgpack-1.0.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11184bc7e56fd74c00ead4f9cc9a3091d62ecb96e97653add7a879a14b003227"}, 168 | {file = "msgpack-1.0.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ac5bd7901487c4a1dd51a8c58f2632b15d838d07ceedaa5e4c080f7190925bff"}, 169 | {file = "msgpack-1.0.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1e91d641d2bfe91ba4c52039adc5bccf27c335356055825c7f88742c8bb900dd"}, 170 | {file = "msgpack-1.0.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2a2df1b55a78eb5f5b7d2a4bb221cd8363913830145fad05374a80bf0877cb1e"}, 171 | {file = "msgpack-1.0.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:545e3cf0cf74f3e48b470f68ed19551ae6f9722814ea969305794645da091236"}, 172 | {file = "msgpack-1.0.4-cp37-cp37m-win32.whl", hash = "sha256:2cc5ca2712ac0003bcb625c96368fd08a0f86bbc1a5578802512d87bc592fe44"}, 173 | {file = "msgpack-1.0.4-cp37-cp37m-win_amd64.whl", hash = "sha256:eba96145051ccec0ec86611fe9cf693ce55f2a3ce89c06ed307de0e085730ec1"}, 174 | {file = "msgpack-1.0.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:7760f85956c415578c17edb39eed99f9181a48375b0d4a94076d84148cf67b2d"}, 175 | {file = "msgpack-1.0.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:449e57cc1ff18d3b444eb554e44613cffcccb32805d16726a5494038c3b93dab"}, 176 | {file = "msgpack-1.0.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d603de2b8d2ea3f3bcb2efe286849aa7a81531abc52d8454da12f46235092bcb"}, 177 | {file = "msgpack-1.0.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48f5d88c99f64c456413d74a975bd605a9b0526293218a3b77220a2c15458ba9"}, 178 | {file = "msgpack-1.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6916c78f33602ecf0509cc40379271ba0f9ab572b066bd4bdafd7434dee4bc6e"}, 179 | {file = "msgpack-1.0.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:81fc7ba725464651190b196f3cd848e8553d4d510114a954681fd0b9c479d7e1"}, 180 | {file = "msgpack-1.0.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d5b5b962221fa2c5d3a7f8133f9abffc114fe218eb4365e40f17732ade576c8e"}, 181 | {file = "msgpack-1.0.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:77ccd2af37f3db0ea59fb280fa2165bf1b096510ba9fe0cc2bf8fa92a22fdb43"}, 182 | {file = "msgpack-1.0.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b17be2478b622939e39b816e0aa8242611cc8d3583d1cd8ec31b249f04623243"}, 183 | {file = "msgpack-1.0.4-cp38-cp38-win32.whl", hash = "sha256:2bb8cdf50dd623392fa75525cce44a65a12a00c98e1e37bf0fb08ddce2ff60d2"}, 184 | {file = "msgpack-1.0.4-cp38-cp38-win_amd64.whl", hash = "sha256:26b8feaca40a90cbe031b03d82b2898bf560027160d3eae1423f4a67654ec5d6"}, 185 | {file = "msgpack-1.0.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:462497af5fd4e0edbb1559c352ad84f6c577ffbbb708566a0abaaa84acd9f3ae"}, 186 | {file = "msgpack-1.0.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2999623886c5c02deefe156e8f869c3b0aaeba14bfc50aa2486a0415178fce55"}, 187 | {file = "msgpack-1.0.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f0029245c51fd9473dc1aede1160b0a29f4a912e6b1dd353fa6d317085b219da"}, 188 | {file = "msgpack-1.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed6f7b854a823ea44cf94919ba3f727e230da29feb4a99711433f25800cf747f"}, 189 | {file = "msgpack-1.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0df96d6eaf45ceca04b3f3b4b111b86b33785683d682c655063ef8057d61fd92"}, 190 | {file = "msgpack-1.0.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6a4192b1ab40f8dca3f2877b70e63799d95c62c068c84dc028b40a6cb03ccd0f"}, 191 | {file = "msgpack-1.0.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0e3590f9fb9f7fbc36df366267870e77269c03172d086fa76bb4eba8b2b46624"}, 192 | {file = "msgpack-1.0.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1576bd97527a93c44fa856770197dec00d223b0b9f36ef03f65bac60197cedf8"}, 193 | {file = "msgpack-1.0.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:63e29d6e8c9ca22b21846234913c3466b7e4ee6e422f205a2988083de3b08cae"}, 194 | {file = "msgpack-1.0.4-cp39-cp39-win32.whl", hash = "sha256:fb62ea4b62bfcb0b380d5680f9a4b3f9a2d166d9394e9bbd9666c0ee09a3645c"}, 195 | {file = "msgpack-1.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:4d5834a2a48965a349da1c5a79760d94a1a0172fbb5ab6b5b33cbf8447e109ce"}, 196 | {file = "msgpack-1.0.4.tar.gz", hash = "sha256:f5d869c18f030202eb412f08b28d2afeea553d6613aee89e200d7aca7ef01f5f"}, 197 | ] 198 | 199 | [[package]] 200 | name = "multidict" 201 | version = "6.0.4" 202 | description = "multidict implementation" 203 | category = "main" 204 | optional = false 205 | python-versions = ">=3.7" 206 | files = [ 207 | {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b1a97283e0c85772d613878028fec909f003993e1007eafa715b24b377cb9b8"}, 208 | {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:eeb6dcc05e911516ae3d1f207d4b0520d07f54484c49dfc294d6e7d63b734171"}, 209 | {file = "multidict-6.0.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d6d635d5209b82a3492508cf5b365f3446afb65ae7ebd755e70e18f287b0adf7"}, 210 | {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c048099e4c9e9d615545e2001d3d8a4380bd403e1a0578734e0d31703d1b0c0b"}, 211 | {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ea20853c6dbbb53ed34cb4d080382169b6f4554d394015f1bef35e881bf83547"}, 212 | {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16d232d4e5396c2efbbf4f6d4df89bfa905eb0d4dc5b3549d872ab898451f569"}, 213 | {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36c63aaa167f6c6b04ef2c85704e93af16c11d20de1d133e39de6a0e84582a93"}, 214 | {file = "multidict-6.0.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:64bdf1086b6043bf519869678f5f2757f473dee970d7abf6da91ec00acb9cb98"}, 215 | {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:43644e38f42e3af682690876cff722d301ac585c5b9e1eacc013b7a3f7b696a0"}, 216 | {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7582a1d1030e15422262de9f58711774e02fa80df0d1578995c76214f6954988"}, 217 | {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:ddff9c4e225a63a5afab9dd15590432c22e8057e1a9a13d28ed128ecf047bbdc"}, 218 | {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ee2a1ece51b9b9e7752e742cfb661d2a29e7bcdba2d27e66e28a99f1890e4fa0"}, 219 | {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a2e4369eb3d47d2034032a26c7a80fcb21a2cb22e1173d761a162f11e562caa5"}, 220 | {file = "multidict-6.0.4-cp310-cp310-win32.whl", hash = "sha256:574b7eae1ab267e5f8285f0fe881f17efe4b98c39a40858247720935b893bba8"}, 221 | {file = "multidict-6.0.4-cp310-cp310-win_amd64.whl", hash = "sha256:4dcbb0906e38440fa3e325df2359ac6cb043df8e58c965bb45f4e406ecb162cc"}, 222 | {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0dfad7a5a1e39c53ed00d2dd0c2e36aed4650936dc18fd9a1826a5ae1cad6f03"}, 223 | {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:64da238a09d6039e3bd39bb3aee9c21a5e34f28bfa5aa22518581f910ff94af3"}, 224 | {file = "multidict-6.0.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ff959bee35038c4624250473988b24f846cbeb2c6639de3602c073f10410ceba"}, 225 | {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01a3a55bd90018c9c080fbb0b9f4891db37d148a0a18722b42f94694f8b6d4c9"}, 226 | {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c5cb09abb18c1ea940fb99360ea0396f34d46566f157122c92dfa069d3e0e982"}, 227 | {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:666daae833559deb2d609afa4490b85830ab0dfca811a98b70a205621a6109fe"}, 228 | {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11bdf3f5e1518b24530b8241529d2050014c884cf18b6fc69c0c2b30ca248710"}, 229 | {file = "multidict-6.0.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d18748f2d30f94f498e852c67d61261c643b349b9d2a581131725595c45ec6c"}, 230 | {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:458f37be2d9e4c95e2d8866a851663cbc76e865b78395090786f6cd9b3bbf4f4"}, 231 | {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:b1a2eeedcead3a41694130495593a559a668f382eee0727352b9a41e1c45759a"}, 232 | {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7d6ae9d593ef8641544d6263c7fa6408cc90370c8cb2bbb65f8d43e5b0351d9c"}, 233 | {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:5979b5632c3e3534e42ca6ff856bb24b2e3071b37861c2c727ce220d80eee9ed"}, 234 | {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dcfe792765fab89c365123c81046ad4103fcabbc4f56d1c1997e6715e8015461"}, 235 | {file = "multidict-6.0.4-cp311-cp311-win32.whl", hash = "sha256:3601a3cece3819534b11d4efc1eb76047488fddd0c85a3948099d5da4d504636"}, 236 | {file = "multidict-6.0.4-cp311-cp311-win_amd64.whl", hash = "sha256:81a4f0b34bd92df3da93315c6a59034df95866014ac08535fc819f043bfd51f0"}, 237 | {file = "multidict-6.0.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:67040058f37a2a51ed8ea8f6b0e6ee5bd78ca67f169ce6122f3e2ec80dfe9b78"}, 238 | {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:853888594621e6604c978ce2a0444a1e6e70c8d253ab65ba11657659dcc9100f"}, 239 | {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:39ff62e7d0f26c248b15e364517a72932a611a9b75f35b45be078d81bdb86603"}, 240 | {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:af048912e045a2dc732847d33821a9d84ba553f5c5f028adbd364dd4765092ac"}, 241 | {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e8b901e607795ec06c9e42530788c45ac21ef3aaa11dbd0c69de543bfb79a9"}, 242 | {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62501642008a8b9871ddfccbf83e4222cf8ac0d5aeedf73da36153ef2ec222d2"}, 243 | {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:99b76c052e9f1bc0721f7541e5e8c05db3941eb9ebe7b8553c625ef88d6eefde"}, 244 | {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:509eac6cf09c794aa27bcacfd4d62c885cce62bef7b2c3e8b2e49d365b5003fe"}, 245 | {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:21a12c4eb6ddc9952c415f24eef97e3e55ba3af61f67c7bc388dcdec1404a067"}, 246 | {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:5cad9430ab3e2e4fa4a2ef4450f548768400a2ac635841bc2a56a2052cdbeb87"}, 247 | {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ab55edc2e84460694295f401215f4a58597f8f7c9466faec545093045476327d"}, 248 | {file = "multidict-6.0.4-cp37-cp37m-win32.whl", hash = "sha256:5a4dcf02b908c3b8b17a45fb0f15b695bf117a67b76b7ad18b73cf8e92608775"}, 249 | {file = "multidict-6.0.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6ed5f161328b7df384d71b07317f4d8656434e34591f20552c7bcef27b0ab88e"}, 250 | {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5fc1b16f586f049820c5c5b17bb4ee7583092fa0d1c4e28b5239181ff9532e0c"}, 251 | {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1502e24330eb681bdaa3eb70d6358e818e8e8f908a22a1851dfd4e15bc2f8161"}, 252 | {file = "multidict-6.0.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b692f419760c0e65d060959df05f2a531945af31fda0c8a3b3195d4efd06de11"}, 253 | {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45e1ecb0379bfaab5eef059f50115b54571acfbe422a14f668fc8c27ba410e7e"}, 254 | {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ddd3915998d93fbcd2566ddf9cf62cdb35c9e093075f862935573d265cf8f65d"}, 255 | {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:59d43b61c59d82f2effb39a93c48b845efe23a3852d201ed2d24ba830d0b4cf2"}, 256 | {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc8e1d0c705233c5dd0c5e6460fbad7827d5d36f310a0fadfd45cc3029762258"}, 257 | {file = "multidict-6.0.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6aa0418fcc838522256761b3415822626f866758ee0bc6632c9486b179d0b52"}, 258 | {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6748717bb10339c4760c1e63da040f5f29f5ed6e59d76daee30305894069a660"}, 259 | {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4d1a3d7ef5e96b1c9e92f973e43aa5e5b96c659c9bc3124acbbd81b0b9c8a951"}, 260 | {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4372381634485bec7e46718edc71528024fcdc6f835baefe517b34a33c731d60"}, 261 | {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:fc35cb4676846ef752816d5be2193a1e8367b4c1397b74a565a9d0389c433a1d"}, 262 | {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4b9d9e4e2b37daddb5c23ea33a3417901fa7c7b3dee2d855f63ee67a0b21e5b1"}, 263 | {file = "multidict-6.0.4-cp38-cp38-win32.whl", hash = "sha256:e41b7e2b59679edfa309e8db64fdf22399eec4b0b24694e1b2104fb789207779"}, 264 | {file = "multidict-6.0.4-cp38-cp38-win_amd64.whl", hash = "sha256:d6c254ba6e45d8e72739281ebc46ea5eb5f101234f3ce171f0e9f5cc86991480"}, 265 | {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:16ab77bbeb596e14212e7bab8429f24c1579234a3a462105cda4a66904998664"}, 266 | {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc779e9e6f7fda81b3f9aa58e3a6091d49ad528b11ed19f6621408806204ad35"}, 267 | {file = "multidict-6.0.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ceef517eca3e03c1cceb22030a3e39cb399ac86bff4e426d4fc6ae49052cc60"}, 268 | {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:281af09f488903fde97923c7744bb001a9b23b039a909460d0f14edc7bf59706"}, 269 | {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:52f2dffc8acaba9a2f27174c41c9e57f60b907bb9f096b36b1a1f3be71c6284d"}, 270 | {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b41156839806aecb3641f3208c0dafd3ac7775b9c4c422d82ee2a45c34ba81ca"}, 271 | {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3fc56f88cc98ef8139255cf8cd63eb2c586531e43310ff859d6bb3a6b51f1"}, 272 | {file = "multidict-6.0.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8316a77808c501004802f9beebde51c9f857054a0c871bd6da8280e718444449"}, 273 | {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f70b98cd94886b49d91170ef23ec5c0e8ebb6f242d734ed7ed677b24d50c82cf"}, 274 | {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bf6774e60d67a9efe02b3616fee22441d86fab4c6d335f9d2051d19d90a40063"}, 275 | {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:e69924bfcdda39b722ef4d9aa762b2dd38e4632b3641b1d9a57ca9cd18f2f83a"}, 276 | {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:6b181d8c23da913d4ff585afd1155a0e1194c0b50c54fcfe286f70cdaf2b7176"}, 277 | {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:52509b5be062d9eafc8170e53026fbc54cf3b32759a23d07fd935fb04fc22d95"}, 278 | {file = "multidict-6.0.4-cp39-cp39-win32.whl", hash = "sha256:27c523fbfbdfd19c6867af7346332b62b586eed663887392cff78d614f9ec313"}, 279 | {file = "multidict-6.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:33029f5734336aa0d4c0384525da0387ef89148dc7191aae00ca5fb23d7aafc2"}, 280 | {file = "multidict-6.0.4.tar.gz", hash = "sha256:3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49"}, 281 | ] 282 | 283 | [[package]] 284 | name = "nonebot-adapter-onebot" 285 | version = "2.2.1" 286 | description = "OneBot(CQHTTP) adapter for nonebot2" 287 | category = "main" 288 | optional = false 289 | python-versions = ">=3.8,<4.0" 290 | files = [ 291 | {file = "nonebot_adapter_onebot-2.2.1-py3-none-any.whl", hash = "sha256:db22c92a541f243ef427a7080096fb28751fec213bc75b111e2c9ed89e121d94"}, 292 | {file = "nonebot_adapter_onebot-2.2.1.tar.gz", hash = "sha256:2f77ff2345cc98e493c3bf00a5fd7112cf20e66ebeac062bbb8de56b4d07040e"}, 293 | ] 294 | 295 | [package.dependencies] 296 | msgpack = ">=1.0.3,<2.0.0" 297 | nonebot2 = ">=2.0.0-beta.3,<3.0.0" 298 | 299 | [[package]] 300 | name = "nonebot2" 301 | version = "2.0.0rc3" 302 | description = "An asynchronous python bot framework." 303 | category = "main" 304 | optional = false 305 | python-versions = ">=3.8,<4.0" 306 | files = [ 307 | {file = "nonebot2-2.0.0rc3-py3-none-any.whl", hash = "sha256:6596e9837e95e99a6cfa7c4e21d75a54a5f3529d34f30454136ebfef6aa374f4"}, 308 | {file = "nonebot2-2.0.0rc3.tar.gz", hash = "sha256:a16da07b7c764d536cbdf9bcb86eb7cc21b1d254c966552ec5d20e0cb303cec2"}, 309 | ] 310 | 311 | [package.dependencies] 312 | loguru = ">=0.6.0,<0.7.0" 313 | pydantic = {version = ">=1.10.0,<2.0.0", extras = ["dotenv"]} 314 | pygtrie = ">=2.4.1,<3.0.0" 315 | tomlkit = ">=0.10.0,<1.0.0" 316 | typing-extensions = ">=3.10.0,<5.0.0" 317 | yarl = ">=1.7.2,<2.0.0" 318 | 319 | [package.extras] 320 | aiohttp = ["aiohttp[speedups] (>=3.7.4,<4.0.0)"] 321 | all = ["Quart (>=0.18.0,<1.0.0)", "aiohttp[speedups] (>=3.7.4,<4.0.0)", "fastapi (>=0.87.0,!=0.89.0,<1.0.0)", "httpx[http2] (>=0.20.0,<1.0.0)", "uvicorn[standard] (>=0.20.0,<1.0.0)", "websockets (>=10.0,<11.0)"] 322 | fastapi = ["fastapi (>=0.87.0,!=0.89.0,<1.0.0)", "uvicorn[standard] (>=0.20.0,<1.0.0)"] 323 | httpx = ["httpx[http2] (>=0.20.0,<1.0.0)"] 324 | quart = ["Quart (>=0.18.0,<1.0.0)", "uvicorn[standard] (>=0.20.0,<1.0.0)"] 325 | websockets = ["websockets (>=10.0,<11.0)"] 326 | 327 | [[package]] 328 | name = "pilk" 329 | version = "0.2.3" 330 | description = "python silk voice library" 331 | category = "main" 332 | optional = false 333 | python-versions = ">=3.6" 334 | files = [ 335 | {file = "pilk-0.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:0ff11704f9370c345e9214833365a075e3fa6be71c6b4b799e47cf9f20abf545"}, 336 | {file = "pilk-0.2.3-cp36-cp36m-win_amd64.whl", hash = "sha256:54967208c59f8ceac19ab90ee954fcbf8fbe08ebb1bc4c7351314a1458e1b65a"}, 337 | {file = "pilk-0.2.3-cp37-cp37m-win_amd64.whl", hash = "sha256:a8cd4fb9b5dabd1c2b32efbf6a987a81298a45159f2300a16364531c8577a93c"}, 338 | {file = "pilk-0.2.3-cp38-cp38-win_amd64.whl", hash = "sha256:c541be7da05c76819d48c2e2dfef5296e945a4d0255d29682b5e89540ae7cd71"}, 339 | {file = "pilk-0.2.3-cp39-cp39-win_amd64.whl", hash = "sha256:82767fdf417e7a9fc9f86e1f2067b054b68bc5581d135b67d58ee3aee84d9368"}, 340 | {file = "pilk-0.2.3.tar.gz", hash = "sha256:bd49899c391e6bc818bff1e346a80bef3831e1c57e2153f6aec57be1ef69e590"}, 341 | ] 342 | 343 | [package.dependencies] 344 | typing-extensions = "*" 345 | 346 | [[package]] 347 | name = "pydantic" 348 | version = "1.10.4" 349 | description = "Data validation and settings management using python type hints" 350 | category = "main" 351 | optional = false 352 | python-versions = ">=3.7" 353 | files = [ 354 | {file = "pydantic-1.10.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5635de53e6686fe7a44b5cf25fcc419a0d5e5c1a1efe73d49d48fe7586db854"}, 355 | {file = "pydantic-1.10.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6dc1cc241440ed7ca9ab59d9929075445da6b7c94ced281b3dd4cfe6c8cff817"}, 356 | {file = "pydantic-1.10.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51bdeb10d2db0f288e71d49c9cefa609bca271720ecd0c58009bd7504a0c464c"}, 357 | {file = "pydantic-1.10.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:78cec42b95dbb500a1f7120bdf95c401f6abb616bbe8785ef09887306792e66e"}, 358 | {file = "pydantic-1.10.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8775d4ef5e7299a2f4699501077a0defdaac5b6c4321173bcb0f3c496fbadf85"}, 359 | {file = "pydantic-1.10.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:572066051eeac73d23f95ba9a71349c42a3e05999d0ee1572b7860235b850cc6"}, 360 | {file = "pydantic-1.10.4-cp310-cp310-win_amd64.whl", hash = "sha256:7feb6a2d401f4d6863050f58325b8d99c1e56f4512d98b11ac64ad1751dc647d"}, 361 | {file = "pydantic-1.10.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:39f4a73e5342b25c2959529f07f026ef58147249f9b7431e1ba8414a36761f53"}, 362 | {file = "pydantic-1.10.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:983e720704431a6573d626b00662eb78a07148c9115129f9b4351091ec95ecc3"}, 363 | {file = "pydantic-1.10.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75d52162fe6b2b55964fbb0af2ee58e99791a3138588c482572bb6087953113a"}, 364 | {file = "pydantic-1.10.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fdf8d759ef326962b4678d89e275ffc55b7ce59d917d9f72233762061fd04a2d"}, 365 | {file = "pydantic-1.10.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:05a81b006be15655b2a1bae5faa4280cf7c81d0e09fcb49b342ebf826abe5a72"}, 366 | {file = "pydantic-1.10.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d88c4c0e5c5dfd05092a4b271282ef0588e5f4aaf345778056fc5259ba098857"}, 367 | {file = "pydantic-1.10.4-cp311-cp311-win_amd64.whl", hash = "sha256:6a05a9db1ef5be0fe63e988f9617ca2551013f55000289c671f71ec16f4985e3"}, 368 | {file = "pydantic-1.10.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:887ca463c3bc47103c123bc06919c86720e80e1214aab79e9b779cda0ff92a00"}, 369 | {file = "pydantic-1.10.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdf88ab63c3ee282c76d652fc86518aacb737ff35796023fae56a65ced1a5978"}, 370 | {file = "pydantic-1.10.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a48f1953c4a1d9bd0b5167ac50da9a79f6072c63c4cef4cf2a3736994903583e"}, 371 | {file = "pydantic-1.10.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a9f2de23bec87ff306aef658384b02aa7c32389766af3c5dee9ce33e80222dfa"}, 372 | {file = "pydantic-1.10.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:cd8702c5142afda03dc2b1ee6bc358b62b3735b2cce53fc77b31ca9f728e4bc8"}, 373 | {file = "pydantic-1.10.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6e7124d6855b2780611d9f5e1e145e86667eaa3bd9459192c8dc1a097f5e9903"}, 374 | {file = "pydantic-1.10.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b53e1d41e97063d51a02821b80538053ee4608b9a181c1005441f1673c55423"}, 375 | {file = "pydantic-1.10.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:55b1625899acd33229c4352ce0ae54038529b412bd51c4915349b49ca575258f"}, 376 | {file = "pydantic-1.10.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:301d626a59edbe5dfb48fcae245896379a450d04baeed50ef40d8199f2733b06"}, 377 | {file = "pydantic-1.10.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b6f9d649892a6f54a39ed56b8dfd5e08b5f3be5f893da430bed76975f3735d15"}, 378 | {file = "pydantic-1.10.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d7b5a3821225f5c43496c324b0d6875fde910a1c2933d726a743ce328fbb2a8c"}, 379 | {file = "pydantic-1.10.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f2f7eb6273dd12472d7f218e1fef6f7c7c2f00ac2e1ecde4db8824c457300416"}, 380 | {file = "pydantic-1.10.4-cp38-cp38-win_amd64.whl", hash = "sha256:4b05697738e7d2040696b0a66d9f0a10bec0efa1883ca75ee9e55baf511909d6"}, 381 | {file = "pydantic-1.10.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a9a6747cac06c2beb466064dda999a13176b23535e4c496c9d48e6406f92d42d"}, 382 | {file = "pydantic-1.10.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:eb992a1ef739cc7b543576337bebfc62c0e6567434e522e97291b251a41dad7f"}, 383 | {file = "pydantic-1.10.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:990406d226dea0e8f25f643b370224771878142155b879784ce89f633541a024"}, 384 | {file = "pydantic-1.10.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e82a6d37a95e0b1b42b82ab340ada3963aea1317fd7f888bb6b9dfbf4fff57c"}, 385 | {file = "pydantic-1.10.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9193d4f4ee8feca58bc56c8306bcb820f5c7905fd919e0750acdeeeef0615b28"}, 386 | {file = "pydantic-1.10.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2b3ce5f16deb45c472dde1a0ee05619298c864a20cded09c4edd820e1454129f"}, 387 | {file = "pydantic-1.10.4-cp39-cp39-win_amd64.whl", hash = "sha256:9cbdc268a62d9a98c56e2452d6c41c0263d64a2009aac69246486f01b4f594c4"}, 388 | {file = "pydantic-1.10.4-py3-none-any.whl", hash = "sha256:4948f264678c703f3877d1c8877c4e3b2e12e549c57795107f08cf70c6ec7774"}, 389 | {file = "pydantic-1.10.4.tar.gz", hash = "sha256:b9a3859f24eb4e097502a3be1fb4b2abb79b6103dd9e2e0edb70613a4459a648"}, 390 | ] 391 | 392 | [package.dependencies] 393 | python-dotenv = {version = ">=0.10.4", optional = true, markers = "extra == \"dotenv\""} 394 | typing-extensions = ">=4.2.0" 395 | 396 | [package.extras] 397 | dotenv = ["python-dotenv (>=0.10.4)"] 398 | email = ["email-validator (>=1.0.3)"] 399 | 400 | [[package]] 401 | name = "pygtrie" 402 | version = "2.5.0" 403 | description = "A pure Python trie data structure implementation." 404 | category = "main" 405 | optional = false 406 | python-versions = "*" 407 | files = [ 408 | {file = "pygtrie-2.5.0-py3-none-any.whl", hash = "sha256:8795cda8105493d5ae159a5bef313ff13156c5d4d72feddefacaad59f8c8ce16"}, 409 | {file = "pygtrie-2.5.0.tar.gz", hash = "sha256:203514ad826eb403dab1d2e2ddd034e0d1534bbe4dbe0213bb0593f66beba4e2"}, 410 | ] 411 | 412 | [[package]] 413 | name = "python-dotenv" 414 | version = "0.21.1" 415 | description = "Read key-value pairs from a .env file and set them as environment variables" 416 | category = "main" 417 | optional = false 418 | python-versions = ">=3.7" 419 | files = [ 420 | {file = "python-dotenv-0.21.1.tar.gz", hash = "sha256:1c93de8f636cde3ce377292818d0e440b6e45a82f215c3744979151fa8151c49"}, 421 | {file = "python_dotenv-0.21.1-py3-none-any.whl", hash = "sha256:41e12e0318bebc859fcc4d97d4db8d20ad21721a6aa5047dd59f090391cb549a"}, 422 | ] 423 | 424 | [package.extras] 425 | cli = ["click (>=5.0)"] 426 | 427 | [[package]] 428 | name = "rfc3986" 429 | version = "1.5.0" 430 | description = "Validating URI References per RFC 3986" 431 | category = "main" 432 | optional = false 433 | python-versions = "*" 434 | files = [ 435 | {file = "rfc3986-1.5.0-py2.py3-none-any.whl", hash = "sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97"}, 436 | {file = "rfc3986-1.5.0.tar.gz", hash = "sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835"}, 437 | ] 438 | 439 | [package.dependencies] 440 | idna = {version = "*", optional = true, markers = "extra == \"idna2008\""} 441 | 442 | [package.extras] 443 | idna2008 = ["idna"] 444 | 445 | [[package]] 446 | name = "sniffio" 447 | version = "1.3.0" 448 | description = "Sniff out which async library your code is running under" 449 | category = "main" 450 | optional = false 451 | python-versions = ">=3.7" 452 | files = [ 453 | {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"}, 454 | {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"}, 455 | ] 456 | 457 | [[package]] 458 | name = "tomlkit" 459 | version = "0.11.6" 460 | description = "Style preserving TOML library" 461 | category = "main" 462 | optional = false 463 | python-versions = ">=3.6" 464 | files = [ 465 | {file = "tomlkit-0.11.6-py3-none-any.whl", hash = "sha256:07de26b0d8cfc18f871aec595fda24d95b08fef89d147caa861939f37230bf4b"}, 466 | {file = "tomlkit-0.11.6.tar.gz", hash = "sha256:71b952e5721688937fb02cf9d354dbcf0785066149d2855e44531ebdd2b65d73"}, 467 | ] 468 | 469 | [[package]] 470 | name = "typing-extensions" 471 | version = "4.4.0" 472 | description = "Backported and Experimental Type Hints for Python 3.7+" 473 | category = "main" 474 | optional = false 475 | python-versions = ">=3.7" 476 | files = [ 477 | {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"}, 478 | {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"}, 479 | ] 480 | 481 | [[package]] 482 | name = "win32-setctime" 483 | version = "1.1.0" 484 | description = "A small Python utility to set file creation time on Windows" 485 | category = "main" 486 | optional = false 487 | python-versions = ">=3.5" 488 | files = [ 489 | {file = "win32_setctime-1.1.0-py3-none-any.whl", hash = "sha256:231db239e959c2fe7eb1d7dc129f11172354f98361c4fa2d6d2d7e278baa8aad"}, 490 | {file = "win32_setctime-1.1.0.tar.gz", hash = "sha256:15cf5750465118d6929ae4de4eb46e8edae9a5634350c01ba582df868e932cb2"}, 491 | ] 492 | 493 | [package.extras] 494 | dev = ["black (>=19.3b0)", "pytest (>=4.6.2)"] 495 | 496 | [[package]] 497 | name = "yarl" 498 | version = "1.8.2" 499 | description = "Yet another URL library" 500 | category = "main" 501 | optional = false 502 | python-versions = ">=3.7" 503 | files = [ 504 | {file = "yarl-1.8.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:bb81f753c815f6b8e2ddd2eef3c855cf7da193b82396ac013c661aaa6cc6b0a5"}, 505 | {file = "yarl-1.8.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:47d49ac96156f0928f002e2424299b2c91d9db73e08c4cd6742923a086f1c863"}, 506 | {file = "yarl-1.8.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3fc056e35fa6fba63248d93ff6e672c096f95f7836938241ebc8260e062832fe"}, 507 | {file = "yarl-1.8.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58a3c13d1c3005dbbac5c9f0d3210b60220a65a999b1833aa46bd6677c69b08e"}, 508 | {file = "yarl-1.8.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:10b08293cda921157f1e7c2790999d903b3fd28cd5c208cf8826b3b508026996"}, 509 | {file = "yarl-1.8.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de986979bbd87272fe557e0a8fcb66fd40ae2ddfe28a8b1ce4eae22681728fef"}, 510 | {file = "yarl-1.8.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c4fcfa71e2c6a3cb568cf81aadc12768b9995323186a10827beccf5fa23d4f8"}, 511 | {file = "yarl-1.8.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae4d7ff1049f36accde9e1ef7301912a751e5bae0a9d142459646114c70ecba6"}, 512 | {file = "yarl-1.8.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:bf071f797aec5b96abfc735ab97da9fd8f8768b43ce2abd85356a3127909d146"}, 513 | {file = "yarl-1.8.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:74dece2bfc60f0f70907c34b857ee98f2c6dd0f75185db133770cd67300d505f"}, 514 | {file = "yarl-1.8.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:df60a94d332158b444301c7f569659c926168e4d4aad2cfbf4bce0e8fb8be826"}, 515 | {file = "yarl-1.8.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:63243b21c6e28ec2375f932a10ce7eda65139b5b854c0f6b82ed945ba526bff3"}, 516 | {file = "yarl-1.8.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cfa2bbca929aa742b5084fd4663dd4b87c191c844326fcb21c3afd2d11497f80"}, 517 | {file = "yarl-1.8.2-cp310-cp310-win32.whl", hash = "sha256:b05df9ea7496df11b710081bd90ecc3a3db6adb4fee36f6a411e7bc91a18aa42"}, 518 | {file = "yarl-1.8.2-cp310-cp310-win_amd64.whl", hash = "sha256:24ad1d10c9db1953291f56b5fe76203977f1ed05f82d09ec97acb623a7976574"}, 519 | {file = "yarl-1.8.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2a1fca9588f360036242f379bfea2b8b44cae2721859b1c56d033adfd5893634"}, 520 | {file = "yarl-1.8.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f37db05c6051eff17bc832914fe46869f8849de5b92dc4a3466cd63095d23dfd"}, 521 | {file = "yarl-1.8.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:77e913b846a6b9c5f767b14dc1e759e5aff05502fe73079f6f4176359d832581"}, 522 | {file = "yarl-1.8.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0978f29222e649c351b173da2b9b4665ad1feb8d1daa9d971eb90df08702668a"}, 523 | {file = "yarl-1.8.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:388a45dc77198b2460eac0aca1efd6a7c09e976ee768b0d5109173e521a19daf"}, 524 | {file = "yarl-1.8.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2305517e332a862ef75be8fad3606ea10108662bc6fe08509d5ca99503ac2aee"}, 525 | {file = "yarl-1.8.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42430ff511571940d51e75cf42f1e4dbdded477e71c1b7a17f4da76c1da8ea76"}, 526 | {file = "yarl-1.8.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3150078118f62371375e1e69b13b48288e44f6691c1069340081c3fd12c94d5b"}, 527 | {file = "yarl-1.8.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c15163b6125db87c8f53c98baa5e785782078fbd2dbeaa04c6141935eb6dab7a"}, 528 | {file = "yarl-1.8.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4d04acba75c72e6eb90745447d69f84e6c9056390f7a9724605ca9c56b4afcc6"}, 529 | {file = "yarl-1.8.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e7fd20d6576c10306dea2d6a5765f46f0ac5d6f53436217913e952d19237efc4"}, 530 | {file = "yarl-1.8.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:75c16b2a900b3536dfc7014905a128a2bea8fb01f9ee26d2d7d8db0a08e7cb2c"}, 531 | {file = "yarl-1.8.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6d88056a04860a98341a0cf53e950e3ac9f4e51d1b6f61a53b0609df342cc8b2"}, 532 | {file = "yarl-1.8.2-cp311-cp311-win32.whl", hash = "sha256:fb742dcdd5eec9f26b61224c23baea46c9055cf16f62475e11b9b15dfd5c117b"}, 533 | {file = "yarl-1.8.2-cp311-cp311-win_amd64.whl", hash = "sha256:8c46d3d89902c393a1d1e243ac847e0442d0196bbd81aecc94fcebbc2fd5857c"}, 534 | {file = "yarl-1.8.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:ceff9722e0df2e0a9e8a79c610842004fa54e5b309fe6d218e47cd52f791d7ef"}, 535 | {file = "yarl-1.8.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f6b4aca43b602ba0f1459de647af954769919c4714706be36af670a5f44c9c1"}, 536 | {file = "yarl-1.8.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1684a9bd9077e922300ecd48003ddae7a7474e0412bea38d4631443a91d61077"}, 537 | {file = "yarl-1.8.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ebb78745273e51b9832ef90c0898501006670d6e059f2cdb0e999494eb1450c2"}, 538 | {file = "yarl-1.8.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3adeef150d528ded2a8e734ebf9ae2e658f4c49bf413f5f157a470e17a4a2e89"}, 539 | {file = "yarl-1.8.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57a7c87927a468e5a1dc60c17caf9597161d66457a34273ab1760219953f7f4c"}, 540 | {file = "yarl-1.8.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:efff27bd8cbe1f9bd127e7894942ccc20c857aa8b5a0327874f30201e5ce83d0"}, 541 | {file = "yarl-1.8.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a783cd344113cb88c5ff7ca32f1f16532a6f2142185147822187913eb989f739"}, 542 | {file = "yarl-1.8.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:705227dccbe96ab02c7cb2c43e1228e2826e7ead880bb19ec94ef279e9555b5b"}, 543 | {file = "yarl-1.8.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:34c09b43bd538bf6c4b891ecce94b6fa4f1f10663a8d4ca589a079a5018f6ed7"}, 544 | {file = "yarl-1.8.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a48f4f7fea9a51098b02209d90297ac324241bf37ff6be6d2b0149ab2bd51b37"}, 545 | {file = "yarl-1.8.2-cp37-cp37m-win32.whl", hash = "sha256:0414fd91ce0b763d4eadb4456795b307a71524dbacd015c657bb2a39db2eab89"}, 546 | {file = "yarl-1.8.2-cp37-cp37m-win_amd64.whl", hash = "sha256:d881d152ae0007809c2c02e22aa534e702f12071e6b285e90945aa3c376463c5"}, 547 | {file = "yarl-1.8.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5df5e3d04101c1e5c3b1d69710b0574171cc02fddc4b23d1b2813e75f35a30b1"}, 548 | {file = "yarl-1.8.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7a66c506ec67eb3159eea5096acd05f5e788ceec7b96087d30c7d2865a243918"}, 549 | {file = "yarl-1.8.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2b4fa2606adf392051d990c3b3877d768771adc3faf2e117b9de7eb977741229"}, 550 | {file = "yarl-1.8.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e21fb44e1eff06dd6ef971d4bdc611807d6bd3691223d9c01a18cec3677939e"}, 551 | {file = "yarl-1.8.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:93202666046d9edadfe9f2e7bf5e0782ea0d497b6d63da322e541665d65a044e"}, 552 | {file = "yarl-1.8.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fc77086ce244453e074e445104f0ecb27530d6fd3a46698e33f6c38951d5a0f1"}, 553 | {file = "yarl-1.8.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64dd68a92cab699a233641f5929a40f02a4ede8c009068ca8aa1fe87b8c20ae3"}, 554 | {file = "yarl-1.8.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1b372aad2b5f81db66ee7ec085cbad72c4da660d994e8e590c997e9b01e44901"}, 555 | {file = "yarl-1.8.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e6f3515aafe0209dd17fb9bdd3b4e892963370b3de781f53e1746a521fb39fc0"}, 556 | {file = "yarl-1.8.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:dfef7350ee369197106805e193d420b75467b6cceac646ea5ed3049fcc950a05"}, 557 | {file = "yarl-1.8.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:728be34f70a190566d20aa13dc1f01dc44b6aa74580e10a3fb159691bc76909d"}, 558 | {file = "yarl-1.8.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:ff205b58dc2929191f68162633d5e10e8044398d7a45265f90a0f1d51f85f72c"}, 559 | {file = "yarl-1.8.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:baf211dcad448a87a0d9047dc8282d7de59473ade7d7fdf22150b1d23859f946"}, 560 | {file = "yarl-1.8.2-cp38-cp38-win32.whl", hash = "sha256:272b4f1599f1b621bf2aabe4e5b54f39a933971f4e7c9aa311d6d7dc06965165"}, 561 | {file = "yarl-1.8.2-cp38-cp38-win_amd64.whl", hash = "sha256:326dd1d3caf910cd26a26ccbfb84c03b608ba32499b5d6eeb09252c920bcbe4f"}, 562 | {file = "yarl-1.8.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f8ca8ad414c85bbc50f49c0a106f951613dfa5f948ab69c10ce9b128d368baf8"}, 563 | {file = "yarl-1.8.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:418857f837347e8aaef682679f41e36c24250097f9e2f315d39bae3a99a34cbf"}, 564 | {file = "yarl-1.8.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ae0eec05ab49e91a78700761777f284c2df119376e391db42c38ab46fd662b77"}, 565 | {file = "yarl-1.8.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:009a028127e0a1755c38b03244c0bea9d5565630db9c4cf9572496e947137a87"}, 566 | {file = "yarl-1.8.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3edac5d74bb3209c418805bda77f973117836e1de7c000e9755e572c1f7850d0"}, 567 | {file = "yarl-1.8.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da65c3f263729e47351261351b8679c6429151ef9649bba08ef2528ff2c423b2"}, 568 | {file = "yarl-1.8.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ef8fb25e52663a1c85d608f6dd72e19bd390e2ecaf29c17fb08f730226e3a08"}, 569 | {file = "yarl-1.8.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bcd7bb1e5c45274af9a1dd7494d3c52b2be5e6bd8d7e49c612705fd45420b12d"}, 570 | {file = "yarl-1.8.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:44ceac0450e648de86da8e42674f9b7077d763ea80c8ceb9d1c3e41f0f0a9951"}, 571 | {file = "yarl-1.8.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:97209cc91189b48e7cfe777237c04af8e7cc51eb369004e061809bcdf4e55220"}, 572 | {file = "yarl-1.8.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:48dd18adcf98ea9cd721a25313aef49d70d413a999d7d89df44f469edfb38a06"}, 573 | {file = "yarl-1.8.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:e59399dda559688461762800d7fb34d9e8a6a7444fd76ec33220a926c8be1516"}, 574 | {file = "yarl-1.8.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d617c241c8c3ad5c4e78a08429fa49e4b04bedfc507b34b4d8dceb83b4af3588"}, 575 | {file = "yarl-1.8.2-cp39-cp39-win32.whl", hash = "sha256:cb6d48d80a41f68de41212f3dfd1a9d9898d7841c8f7ce6696cf2fd9cb57ef83"}, 576 | {file = "yarl-1.8.2-cp39-cp39-win_amd64.whl", hash = "sha256:6604711362f2dbf7160df21c416f81fac0de6dbcf0b5445a2ef25478ecc4c778"}, 577 | {file = "yarl-1.8.2.tar.gz", hash = "sha256:49d43402c6e3013ad0978602bf6bf5328535c48d192304b91b97a3c6790b1562"}, 578 | ] 579 | 580 | [package.dependencies] 581 | idna = ">=2.0" 582 | multidict = ">=4.0" 583 | 584 | [metadata] 585 | lock-version = "2.0" 586 | python-versions = "^3.8" 587 | content-hash = "b90daeee004db570992c3d26f00162d0c90ea01d89c4d776ef5ba2c6104fddca" 588 | --------------------------------------------------------------------------------