final fixes: huggingface works now

main
Thamognya Kodi 2023-01-18 21:38:51 +07:00
parent 5e2054fc43
commit 091e0b27e6
8 changed files with 662 additions and 729 deletions

View File

@ -16,6 +16,10 @@ docs-dev:
docs-build: docs-build:
mkdocs build mkdocs build
.PHONY: publish
publish:
poetry build && poetry publish --build --username $PYPI_USERNAME --password $PYPI_PASSWORD
#* Poetry #* Poetry
.PHONY: poetry-download .PHONY: poetry-download
poetry-download: poetry-download:
@ -78,10 +82,11 @@ update-dev-deps:
poetry add --group dev --allow-prereleases black@latest poetry add --group dev --allow-prereleases black@latest
.PHONY: update-deps .PHONY: update-deps
update-deps: poetry update --lock && pip install -r requirements.txt update-deps:
poetry update --lock
.PHONY: update .PHONY: update
update: update-dev-deps update-deps update: update-dev-deps update-deps install
#* Container / Docker #* Container / Docker

View File

@ -1,5 +1,4 @@
# type: ignore # type: ignore
""" """
model naming convention model naming convention
# Open-AI models: # Open-AI models:
@ -7,25 +6,23 @@ include prefix openai-*
# HuggingFace # HuggingFace
include prefix hf-* include prefix hf-*
""" """
from typing import Any, List, Tuple from typing import Any, List, Tuple
import os import os
import sys import sys
from pathlib import Path from pathlib import Path
import dotenv
import openai
from transformers import pipeline
sys.path.append(str(Path(__file__).parent.parent.parent) + "/tools/NLP/data") sys.path.append(str(Path(__file__).parent.parent.parent) + "/tools/NLP/data")
sys.path.append(str(Path(__file__).parent.parent.parent) + "/tools/NLP") sys.path.append(str(Path(__file__).parent.parent.parent) + "/tools/NLP")
sys.path.append(str(Path(__file__).parent.parent.parent) + "/tools") sys.path.append(str(Path(__file__).parent.parent.parent) + "/tools")
sys.path.append(str(Path(__file__).parent.parent.parent) + "/utils") sys.path.append(str(Path(__file__).parent.parent.parent) + "/utils")
import config import config
import dotenv
import internet import internet
import openai
from ChatGPT import Chatbot from ChatGPT import Chatbot
from transformers import pipeline
dotenv.load_dotenv() dotenv.load_dotenv()
@ -37,18 +34,12 @@ def answer(
GOOGLE_SEARCH_ENGINE_ID: str = "", GOOGLE_SEARCH_ENGINE_ID: str = "",
OPENAI_API_KEY: str = "", OPENAI_API_KEY: str = "",
CHATGPT_SESSION_TOKEN: str = "", CHATGPT_SESSION_TOKEN: str = "",
CHATGPT_CONVERSATION_ID: str = "",
CHATGPT_PARENT_ID: str = "",
) -> tuple[Any, list[str]]: ) -> tuple[Any, list[str]]:
if OPENAI_API_KEY == "": if OPENAI_API_KEY == "":
OPENAI_API_KEY = str(os.environ.get("OPENAI_API_KEY")) OPENAI_API_KEY = str(os.environ.get("OPENAI_API_KEY"))
openai.api_key = OPENAI_API_KEY openai.api_key = OPENAI_API_KEY
if CHATGPT_SESSION_TOKEN == "": if CHATGPT_SESSION_TOKEN == "":
CHATGPT_SESSION_TOKEN = str(os.environ.get("CHATGPT_SESSION_TOKEN")) CHATGPT_SESSION_TOKEN = str(os.environ.get("CHATGPT_SESSION_TOKEN"))
if CHATGPT_CONVERSATION_ID == "":
CHATGPT_CONVERSATION_ID = str(os.environ.get("CHATGPT_CONVERSATION_ID"))
if CHATGPT_PARENT_ID == "":
CHATGPT_PARENT_ID = str(os.environ.get("CHATGPT_PARENT_ID"))
if not (model.startswith("openai-") or model.startswith("hf-")): if not (model.startswith("openai-") or model.startswith("hf-")):
model = "openai-chatgpt" # Default model = "openai-chatgpt" # Default
@ -56,13 +47,13 @@ def answer(
results: tuple[list[str], list[str]] = internet.Google( results: tuple[list[str], list[str]] = internet.Google(
query, GOOGLE_SEARCH_API_KEY, GOOGLE_SEARCH_ENGINE_ID query, GOOGLE_SEARCH_API_KEY, GOOGLE_SEARCH_ENGINE_ID
).google() ).google()
context: str = str(" ".join([str(string) for string in results[0]]))
print(f"context: {context}")
if model.startswith("openai-"): if model.startswith("openai-"):
if model == "openai-chatgpt": if model == "openai-chatgpt":
# ChatGPT # ChatGPT
prompt = f"Using the context: {' '.join(filter(lambda x: isinstance(x, str), results[0]))[:3000]} and answer the question with the context above and previous knowledge: \"{query}\". Also write long answers or essays if asked." prompt = f'Use the context: {context[:4000]} and answer the question: "{query}" with the context and prior knowledge. Also write at the very least long answers.'
print(prompt)
exit(1)
chatbot = Chatbot( chatbot = Chatbot(
{"session_token": CHATGPT_SESSION_TOKEN}, {"session_token": CHATGPT_SESSION_TOKEN},
conversation_id=None, conversation_id=None,
@ -77,7 +68,7 @@ def answer(
else: else:
if model == "openai-text-davinci-003": if model == "openai-text-davinci-003":
# text-davinci-003 # text-davinci-003
prompt = f"Using the context: {' '.join(filter(lambda x: isinstance(x, str), results[0]))[:3000]} and answer the question with the context above and previous knowledge: \"{query}\". Also write long answers or essays if asked." prompt = f'Use the context: {context[:3000]} and answer the question: "{query}" with the context and prior knowledge. Also write at the very least long answers.'
response = openai.Completion.create( response = openai.Completion.create(
model="text-davinci-003", model="text-davinci-003",
prompt=prompt, prompt=prompt,
@ -89,15 +80,16 @@ def answer(
return (response.choices[0].text, results[1]) return (response.choices[0].text, results[1])
# TODO: add suport later # TODO: add suport later
else: else:
# HuggingFace
model = model.replace("hf-", "", 1) model = model.replace("hf-", "", 1)
qa_model = pipeline("question-answering", model=model) qa_model = pipeline("question-answering", model=model)
response = qa_model(question=query, context=" ".join(results[0])) response = qa_model(question=query, context=context)
return (response["answer"], results[1]) return (response["answer"], results[1])
print( print(
answer( answer(
query="Best original song in 80th Golden Globe award 2023?", query="What is the newest pokemon game?",
model="openai-chatgpt", model="hf-deepset/xlm-roberta-large-squad2",
) )
) )

View File

@ -3,13 +3,19 @@
# Copied and updated from https://github.com/acheong08/ChatGPT/blob/main/src/revChatGPT/ChatGPT.py # Copied and updated from https://github.com/acheong08/ChatGPT/blob/main/src/revChatGPT/ChatGPT.py
# credits to https://github.com/acheong08/ChatGPT # credits to https://github.com/acheong08/ChatGPT
import uuid, re, json, tls_client, logging import json
import undetected_chromedriver as uc import logging
from selenium.webdriver.support.ui import WebDriverWait import re
from selenium.webdriver.support import expected_conditions as EC import uuid
from selenium.webdriver.common.by import By
from time import sleep from time import sleep
import tls_client
import undetected_chromedriver as uc
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from twocaptcha import TwoCaptcha from twocaptcha import TwoCaptcha
# Disable all logging # Disable all logging
logging.basicConfig(level=logging.ERROR) logging.basicConfig(level=logging.ERROR)
@ -17,17 +23,16 @@ BASE_URL = "https://chat.openai.com/"
class Chrome(uc.Chrome): class Chrome(uc.Chrome):
def __del__(self): def __del__(self):
self.quit() self.quit()
class Chatbot: class Chatbot:
def __init__(self, config, conversation_id=None, parent_id=None, no_refresh=False) -> None: def __init__(
self, config, conversation_id=None, parent_id=None, no_refresh=False
) -> None:
self.config = config self.config = config
self.session = tls_client.Session( self.session = tls_client.Session(client_identifier="chrome_108")
client_identifier="chrome_108"
)
if "proxy" in config: if "proxy" in config:
if type(config["proxy"]) != str: if type(config["proxy"]) != str:
raise Exception("Proxy must be a string!") raise Exception("Proxy must be a string!")
@ -50,9 +55,9 @@ class Chatbot:
self.isMicrosoftLogin = False self.isMicrosoftLogin = False
self.twocaptcha_key = None self.twocaptcha_key = None
# stdout colors # stdout colors
self.GREEN = '\033[92m' self.GREEN = "\033[92m"
self.WARNING = '\033[93m' self.WARNING = "\033[93m"
self.ENDCOLOR = '\033[0m' self.ENDCOLOR = "\033[0m"
if "email" in config and "password" in config: if "email" in config and "password" in config:
if type(config["email"]) != str: if type(config["email"]) != str:
raise Exception("Email must be a string!") raise Exception("Email must be a string!")
@ -78,7 +83,8 @@ class Chatbot:
raise Exception("Session token must be a string!") raise Exception("Session token must be a string!")
self.session_token = config["session_token"] self.session_token = config["session_token"]
self.session.cookies.set( self.session.cookies.set(
"__Secure-next-auth.session-token", config["session_token"]) "__Secure-next-auth.session-token", config["session_token"]
)
self.get_cf_cookies() self.get_cf_cookies()
else: else:
raise Exception("Invalid config!") raise Exception("Invalid config!")
@ -96,10 +102,16 @@ class Chatbot:
raise exc raise exc
retries -= 1 retries -= 1
def ask(self, prompt, conversation_id=None, parent_id=None, gen_title=False, session_token=None): def ask(
self,
prompt,
conversation_id=None,
parent_id=None,
gen_title=False,
session_token=None,
):
if session_token: if session_token:
self.session.cookies.set( self.session.cookies.set("__Secure-next-auth.session-token", session_token)
"__Secure-next-auth.session-token", session_token)
self.session_token = session_token self.session_token = session_token
self.config["session_token"] = session_token self.config["session_token"] = session_token
self.retry_refresh() self.retry_refresh()
@ -107,8 +119,11 @@ class Chatbot:
if conversation_id == None: if conversation_id == None:
conversation_id = self.conversation_id conversation_id = self.conversation_id
if parent_id == None: if parent_id == None:
parent_id = self.parent_id if conversation_id == self.conversation_id else self.conversation_mapping[ parent_id = (
conversation_id] self.parent_id
if conversation_id == self.conversation_id
else self.conversation_mapping[conversation_id]
)
data = { data = {
"action": "next", "action": "next",
"messages": [ "messages": [
@ -123,13 +138,12 @@ class Chatbot:
"model": "text-davinci-002-render", "model": "text-davinci-002-render",
} }
new_conv = data["conversation_id"] is None new_conv = data["conversation_id"] is None
self.conversation_id_prev_queue.append( self.conversation_id_prev_queue.append(data["conversation_id"]) # for rollback
data["conversation_id"]) # for rollback
self.parent_id_prev_queue.append(data["parent_message_id"]) self.parent_id_prev_queue.append(data["parent_message_id"])
response = self.session.post( response = self.session.post(
url=BASE_URL + "backend-api/conversation", url=BASE_URL + "backend-api/conversation",
data=json.dumps(data), data=json.dumps(data),
timeout_seconds=180 timeout_seconds=180,
) )
if response.status_code != 200: if response.status_code != 200:
print(response.text) print(response.text)
@ -155,12 +169,12 @@ class Chatbot:
} }
if gen_title and new_conv: if gen_title and new_conv:
try: try:
title = self.gen_title( title = self.gen_title(self.conversation_id, self.parent_id)[
self.conversation_id, self.parent_id)["title"] "title"
]
except Exception as exc: except Exception as exc:
split = prompt.split(" ") split = prompt.split(" ")
title = " ".join(split[:3]) + \ title = " ".join(split[:3]) + ("..." if len(split) > 3 else "")
("..." if len(split) > 3 else "")
res["title"] = title res["title"] = title
return res return res
else: else:
@ -172,8 +186,7 @@ class Chatbot:
raise Exception("Response code error: ", response.status_code) raise Exception("Response code error: ", response.status_code)
def get_conversations(self, offset=0, limit=20): def get_conversations(self, offset=0, limit=20):
url = BASE_URL + \ url = BASE_URL + f"backend-api/conversations?offset={offset}&limit={limit}"
f"backend-api/conversations?offset={offset}&limit={limit}"
response = self.session.get(url) response = self.session.get(url)
self.check_response(response) self.check_response(response)
data = json.loads(response.text) data = json.loads(response.text)
@ -188,8 +201,12 @@ class Chatbot:
def gen_title(self, id, message_id): def gen_title(self, id, message_id):
url = BASE_URL + f"backend-api/conversation/gen_title/{id}" url = BASE_URL + f"backend-api/conversation/gen_title/{id}"
response = self.session.post(url, data=json.dumps( response = self.session.post(
{"message_id": message_id, "model": "text-davinci-002-render"})) url,
data=json.dumps(
{"message_id": message_id, "model": "text-davinci-002-render"}
),
)
self.check_response(response) self.check_response(response)
data = json.loads(response.text) data = json.loads(response.text)
return data return data
@ -212,8 +229,7 @@ class Chatbot:
def refresh_session(self, session_token=None): def refresh_session(self, session_token=None):
if session_token: if session_token:
self.session.cookies.set( self.session.cookies.set("__Secure-next-auth.session-token", session_token)
"__Secure-next-auth.session-token", session_token)
self.session_token = session_token self.session_token = session_token
self.config["session_token"] = session_token self.config["session_token"] = session_token
url = BASE_URL + "api/auth/session" url = BASE_URL + "api/auth/session"
@ -224,15 +240,23 @@ class Chatbot:
try: try:
if "error" in response.json(): if "error" in response.json():
raise Exception( raise Exception(
f"Failed to refresh session! Error: {response.json()['error']}") f"Failed to refresh session! Error: {response.json()['error']}"
elif response.status_code != 200 or response.json() == {} or "accessToken" not in response.json(): )
raise Exception(f'Response code: {response.status_code} \n Response: {response.text}') elif (
response.status_code != 200
or response.json() == {}
or "accessToken" not in response.json()
):
raise Exception(
f"Response code: {response.status_code} \n Response: {response.text}"
)
else: else:
self.session.headers.update({ self.session.headers.update(
"Authorization": "Bearer " + response.json()["accessToken"] {"Authorization": "Bearer " + response.json()["accessToken"]}
}) )
self.session_token = self.session.cookies._find( self.session_token = self.session.cookies._find(
"__Secure-next-auth.session-token", ) "__Secure-next-auth.session-token",
)
except Exception as exc: except Exception as exc:
print("Failed to refresh session!") print("Failed to refresh session!")
if self.isMicrosoftLogin: if self.isMicrosoftLogin:
@ -268,65 +292,86 @@ class Chatbot:
options = self.__get_ChromeOptions() options = self.__get_ChromeOptions()
print("Spawning browser...") print("Spawning browser...")
driver = uc.Chrome( driver = uc.Chrome(
enable_cdp_events=True, options=options, enable_cdp_events=True,
options=options,
driver_executable_path=self.config.get("driver_exec_path"), driver_executable_path=self.config.get("driver_exec_path"),
browser_executable_path=self.config.get("browser_exec_path") browser_executable_path=self.config.get("browser_exec_path"),
) )
print("Browser spawned.") print("Browser spawned.")
driver.add_cdp_listener( driver.add_cdp_listener(
"Network.responseReceivedExtraInfo", lambda msg: self.detect_cookies(msg)) "Network.responseReceivedExtraInfo",
lambda msg: self.detect_cookies(msg),
)
driver.add_cdp_listener( driver.add_cdp_listener(
"Network.requestWillBeSentExtraInfo", lambda msg: self.detect_user_agent(msg)) "Network.requestWillBeSentExtraInfo",
lambda msg: self.detect_user_agent(msg),
)
driver.get(BASE_URL) driver.get(BASE_URL)
while not self.agent_found or not self.cf_cookie_found: while not self.agent_found or not self.cf_cookie_found:
sleep(5) sleep(5)
self.refresh_headers(cf_clearance=self.cf_clearance, self.refresh_headers(
user_agent=self.user_agent) cf_clearance=self.cf_clearance, user_agent=self.user_agent
)
# Wait for the login button to appear # Wait for the login button to appear
WebDriverWait(driver, 120).until(EC.element_to_be_clickable( WebDriverWait(driver, 120).until(
(By.XPATH, "//button[contains(text(), 'Log in')]"))) EC.element_to_be_clickable(
(By.XPATH, "//button[contains(text(), 'Log in')]")
)
)
# Click the login button # Click the login button
driver.find_element( driver.find_element(
by=By.XPATH, value="//button[contains(text(), 'Log in')]").click() by=By.XPATH, value="//button[contains(text(), 'Log in')]"
).click()
# Wait for the Login with Microsoft button to be clickable # Wait for the Login with Microsoft button to be clickable
WebDriverWait(driver, 60).until(EC.element_to_be_clickable( WebDriverWait(driver, 60).until(
(By.XPATH, "//button[@data-provider='windowslive']"))) EC.element_to_be_clickable(
(By.XPATH, "//button[@data-provider='windowslive']")
)
)
# Click the Login with Microsoft button # Click the Login with Microsoft button
driver.find_element( driver.find_element(
by=By.XPATH, value="//button[@data-provider='windowslive']").click() by=By.XPATH, value="//button[@data-provider='windowslive']"
).click()
# Wait for the email input field to appear # Wait for the email input field to appear
WebDriverWait(driver, 60).until(EC.visibility_of_element_located( WebDriverWait(driver, 60).until(
(By.XPATH, "//input[@type='email']"))) EC.visibility_of_element_located((By.XPATH, "//input[@type='email']"))
)
# Enter the email # Enter the email
driver.find_element( driver.find_element(by=By.XPATH, value="//input[@type='email']").send_keys(
by=By.XPATH, value="//input[@type='email']").send_keys(self.config["email"]) self.config["email"]
)
# Wait for the Next button to be clickable # Wait for the Next button to be clickable
WebDriverWait(driver, 60).until(EC.element_to_be_clickable( WebDriverWait(driver, 60).until(
(By.XPATH, "//input[@type='submit']"))) EC.element_to_be_clickable((By.XPATH, "//input[@type='submit']"))
)
# Click the Next button # Click the Next button
driver.find_element( driver.find_element(by=By.XPATH, value="//input[@type='submit']").click()
by=By.XPATH, value="//input[@type='submit']").click()
# Wait for the password input field to appear # Wait for the password input field to appear
WebDriverWait(driver, 60).until(EC.visibility_of_element_located( WebDriverWait(driver, 60).until(
(By.XPATH, "//input[@type='password']"))) EC.visibility_of_element_located(
(By.XPATH, "//input[@type='password']")
)
)
# Enter the password # Enter the password
driver.find_element( driver.find_element(
by=By.XPATH, value="//input[@type='password']").send_keys(self.config["password"]) by=By.XPATH, value="//input[@type='password']"
).send_keys(self.config["password"])
# Wait for the Sign in button to be clickable # Wait for the Sign in button to be clickable
WebDriverWait(driver, 60).until(EC.element_to_be_clickable( WebDriverWait(driver, 60).until(
(By.XPATH, "//input[@type='submit']"))) EC.element_to_be_clickable((By.XPATH, "//input[@type='submit']"))
)
# Click the Sign in button # Click the Sign in button
driver.find_element( driver.find_element(by=By.XPATH, value="//input[@type='submit']").click()
by=By.XPATH, value="//input[@type='submit']").click()
# Wait for the Allow button to appear # Wait for the Allow button to appear
WebDriverWait(driver, 60).until(EC.element_to_be_clickable( WebDriverWait(driver, 60).until(
(By.XPATH, "//input[@type='submit']"))) EC.element_to_be_clickable((By.XPATH, "//input[@type='submit']"))
)
# click Yes button # click Yes button
driver.find_element( driver.find_element(by=By.XPATH, value="//input[@type='submit']").click()
by=By.XPATH, value="//input[@type='submit']").click()
# wait for input box to appear (to make sure we're signed in) # wait for input box to appear (to make sure we're signed in)
WebDriverWait(driver, 60).until(EC.visibility_of_element_located( WebDriverWait(driver, 60).until(
(By.XPATH, "//textarea"))) EC.visibility_of_element_located((By.XPATH, "//textarea"))
)
while not self.session_cookie_found: while not self.session_cookie_found:
sleep(5) sleep(5)
print(self.GREEN + "Login successful." + self.ENDCOLOR) print(self.GREEN + "Login successful." + self.ENDCOLOR)
@ -343,20 +388,26 @@ class Chatbot:
""" """
twocaptcha_key = self.twocaptcha_key twocaptcha_key = self.twocaptcha_key
twocaptcha_solver_config = { twocaptcha_solver_config = {
'apiKey': twocaptcha_key, "apiKey": twocaptcha_key,
'defaultTimeout': 120, "defaultTimeout": 120,
'recaptchaTimeout': 600, "recaptchaTimeout": 600,
'pollingInterval': 10, "pollingInterval": 10,
} }
twocaptcha_solver = TwoCaptcha(**twocaptcha_solver_config) twocaptcha_solver = TwoCaptcha(**twocaptcha_solver_config)
print('Waiting for captcha to be solved...') print("Waiting for captcha to be solved...")
solved_captcha = twocaptcha_solver.recaptcha( solved_captcha = twocaptcha_solver.recaptcha(
sitekey='6Lc-wnQjAAAAADa5SPd68d0O3xmj0030uaVzpnXP', url="https://auth0.openai.com/u/login/identifier") sitekey="6Lc-wnQjAAAAADa5SPd68d0O3xmj0030uaVzpnXP",
url="https://auth0.openai.com/u/login/identifier",
)
if "code" in solved_captcha: if "code" in solved_captcha:
print(self.GREEN + "Captcha solved successfully!" + self.ENDCOLOR) print(self.GREEN + "Captcha solved successfully!" + self.ENDCOLOR)
if self.verbose: if self.verbose:
print(self.GREEN + "Captcha token: " + print(
self.ENDCOLOR + solved_captcha["code"]) self.GREEN
+ "Captcha token: "
+ self.ENDCOLOR
+ solved_captcha["code"]
)
return solved_captcha return solved_captcha
def email_login(self, solved_captcha) -> None: def email_login(self, solved_captcha) -> None:
@ -375,74 +426,105 @@ class Chatbot:
options = self.__get_ChromeOptions() options = self.__get_ChromeOptions()
print("Spawning browser...") print("Spawning browser...")
driver = uc.Chrome( driver = uc.Chrome(
enable_cdp_events=True, options=options, enable_cdp_events=True,
options=options,
driver_executable_path=self.config.get("driver_exec_path"), driver_executable_path=self.config.get("driver_exec_path"),
browser_executable_path=self.config.get("browser_exec_path") browser_executable_path=self.config.get("browser_exec_path"),
) )
print("Browser spawned.") print("Browser spawned.")
driver.add_cdp_listener( driver.add_cdp_listener(
"Network.responseReceivedExtraInfo", lambda msg: self.detect_cookies(msg)) "Network.responseReceivedExtraInfo",
lambda msg: self.detect_cookies(msg),
)
driver.add_cdp_listener( driver.add_cdp_listener(
"Network.requestWillBeSentExtraInfo", lambda msg: self.detect_user_agent(msg)) "Network.requestWillBeSentExtraInfo",
lambda msg: self.detect_user_agent(msg),
)
driver.get(BASE_URL) driver.get(BASE_URL)
while not self.agent_found or not self.cf_cookie_found: while not self.agent_found or not self.cf_cookie_found:
sleep(5) sleep(5)
self.refresh_headers(cf_clearance=self.cf_clearance, self.refresh_headers(
user_agent=self.user_agent) cf_clearance=self.cf_clearance, user_agent=self.user_agent
)
# Wait for the login button to appear # Wait for the login button to appear
WebDriverWait(driver, 120).until(EC.element_to_be_clickable( WebDriverWait(driver, 120).until(
(By.XPATH, "//button[contains(text(), 'Log in')]"))) EC.element_to_be_clickable(
(By.XPATH, "//button[contains(text(), 'Log in')]")
)
)
# Click the login button # Click the login button
driver.find_element( driver.find_element(
by=By.XPATH, value="//button[contains(text(), 'Log in')]").click() by=By.XPATH, value="//button[contains(text(), 'Log in')]"
).click()
# Wait for the email input field to appear # Wait for the email input field to appear
WebDriverWait(driver, 60).until(EC.visibility_of_element_located( WebDriverWait(driver, 60).until(
(By.ID, "username"))) EC.visibility_of_element_located((By.ID, "username"))
)
# Enter the email # Enter the email
driver.find_element(by=By.ID, value="username").send_keys( driver.find_element(by=By.ID, value="username").send_keys(
self.config["email"]) self.config["email"]
)
# Wait for Recaptcha to appear # Wait for Recaptcha to appear
WebDriverWait(driver, 60).until(EC.presence_of_element_located( WebDriverWait(driver, 60).until(
(By.CSS_SELECTOR, "*[name*='g-recaptcha-response']"))) EC.presence_of_element_located(
(By.CSS_SELECTOR, "*[name*='g-recaptcha-response']")
)
)
# Find Recaptcha # Find Recaptcha
google_captcha_response_input = driver.find_element( google_captcha_response_input = driver.find_element(
By.CSS_SELECTOR, "*[name*='g-recaptcha-response']") By.CSS_SELECTOR, "*[name*='g-recaptcha-response']"
captcha_input = driver.find_element(By.NAME, 'captcha') )
captcha_input = driver.find_element(By.NAME, "captcha")
# Make input visible # Make input visible
driver.execute_script("arguments[0].setAttribute('style','type: text; visibility:visible;');", driver.execute_script(
google_captcha_response_input) "arguments[0].setAttribute('style','type: text; visibility:visible;');",
driver.execute_script("arguments[0].setAttribute('style','type: text; visibility:visible;');", google_captcha_response_input,
captcha_input) )
driver.execute_script(""" driver.execute_script(
"arguments[0].setAttribute('style','type: text; visibility:visible;');",
captcha_input,
)
driver.execute_script(
"""
document.getElementById("g-recaptcha-response").innerHTML = arguments[0] document.getElementById("g-recaptcha-response").innerHTML = arguments[0]
""", solved_captcha.get('code')) """,
driver.execute_script(""" solved_captcha.get("code"),
)
driver.execute_script(
"""
document.querySelector("input[name='captcha']").value = arguments[0] document.querySelector("input[name='captcha']").value = arguments[0]
""", solved_captcha.get('code')) """,
solved_captcha.get("code"),
)
# Hide the captcha input # Hide the captcha input
driver.execute_script("arguments[0].setAttribute('style', 'display:none;');", driver.execute_script(
google_captcha_response_input) "arguments[0].setAttribute('style', 'display:none;');",
google_captcha_response_input,
)
# Wait for the Continue button to be clickable # Wait for the Continue button to be clickable
WebDriverWait(driver, 60).until(EC.element_to_be_clickable( WebDriverWait(driver, 60).until(
(By.XPATH, "//button[@type='submit']"))) EC.element_to_be_clickable((By.XPATH, "//button[@type='submit']"))
)
# Click the Continue button # Click the Continue button
driver.find_element( driver.find_element(by=By.XPATH, value="//button[@type='submit']").click()
by=By.XPATH, value="//button[@type='submit']").click()
# Wait for the password input field to appear # Wait for the password input field to appear
WebDriverWait(driver, 60).until(EC.visibility_of_element_located( WebDriverWait(driver, 60).until(
(By.ID, "password"))) EC.visibility_of_element_located((By.ID, "password"))
)
# Enter the password # Enter the password
driver.find_element(by=By.ID, value="password").send_keys( driver.find_element(by=By.ID, value="password").send_keys(
self.config["password"]) self.config["password"]
)
# Wait for the Sign in button to be clickable # Wait for the Sign in button to be clickable
WebDriverWait(driver, 60).until(EC.element_to_be_clickable( WebDriverWait(driver, 60).until(
(By.XPATH, "//button[@type='submit']"))) EC.element_to_be_clickable((By.XPATH, "//button[@type='submit']"))
)
# Click the Sign in button # Click the Sign in button
driver.find_element( driver.find_element(by=By.XPATH, value="//button[@type='submit']").click()
by=By.XPATH, value="//button[@type='submit']").click()
# wait for input box to appear (to make sure we're signed in) # wait for input box to appear (to make sure we're signed in)
WebDriverWait(driver, 60).until(EC.visibility_of_element_located( WebDriverWait(driver, 60).until(
(By.XPATH, "//textarea"))) EC.visibility_of_element_located((By.XPATH, "//textarea"))
)
while not self.session_cookie_found: while not self.session_cookie_found:
sleep(5) sleep(5)
print(self.GREEN + "Login successful." + self.ENDCOLOR) print(self.GREEN + "Login successful." + self.ENDCOLOR)
@ -453,10 +535,10 @@ class Chatbot:
def __get_ChromeOptions(self): def __get_ChromeOptions(self):
options = uc.ChromeOptions() options = uc.ChromeOptions()
options.add_argument('--start_maximized') options.add_argument("--start_maximized")
options.add_argument("--disable-extensions") options.add_argument("--disable-extensions")
options.add_argument('--disable-application-cache') options.add_argument("--disable-application-cache")
options.add_argument('--disable-gpu') options.add_argument("--disable-gpu")
options.add_argument("--no-sandbox") options.add_argument("--no-sandbox")
options.add_argument("--disable-setuid-sandbox") options.add_argument("--disable-setuid-sandbox")
options.add_argument("--disable-dev-shm-usage") options.add_argument("--disable-dev-shm-usage")
@ -478,15 +560,20 @@ class Chatbot:
options = self.__get_ChromeOptions() options = self.__get_ChromeOptions()
print("Spawning browser...") print("Spawning browser...")
driver = uc.Chrome( driver = uc.Chrome(
enable_cdp_events=True, options=options, enable_cdp_events=True,
options=options,
driver_executable_path=self.config.get("driver_exec_path"), driver_executable_path=self.config.get("driver_exec_path"),
browser_executable_path=self.config.get("browser_exec_path") browser_executable_path=self.config.get("browser_exec_path"),
) )
print("Browser spawned.") print("Browser spawned.")
driver.add_cdp_listener( driver.add_cdp_listener(
"Network.responseReceivedExtraInfo", lambda msg: self.detect_cookies(msg)) "Network.responseReceivedExtraInfo",
lambda msg: self.detect_cookies(msg),
)
driver.add_cdp_listener( driver.add_cdp_listener(
"Network.requestWillBeSentExtraInfo", lambda msg: self.detect_user_agent(msg)) "Network.requestWillBeSentExtraInfo",
lambda msg: self.detect_user_agent(msg),
)
driver.get("https://chat.openai.com/chat") driver.get("https://chat.openai.com/chat")
while not self.agent_found or not self.cf_cookie_found: while not self.agent_found or not self.cf_cookie_found:
sleep(5) sleep(5)
@ -494,18 +581,22 @@ class Chatbot:
# Close the browser # Close the browser
driver.quit() driver.quit()
del driver del driver
self.refresh_headers(cf_clearance=self.cf_clearance, self.refresh_headers(
user_agent=self.user_agent) cf_clearance=self.cf_clearance, user_agent=self.user_agent
)
def detect_cookies(self, message): def detect_cookies(self, message):
if 'params' in message: if "params" in message:
if 'headers' in message['params']: if "headers" in message["params"]:
if 'set-cookie' in message['params']['headers']: if "set-cookie" in message["params"]["headers"]:
# Use regex to get the cookie for cf_clearance=*; # Use regex to get the cookie for cf_clearance=*;
cf_clearance_cookie = re.search( cf_clearance_cookie = re.search(
"cf_clearance=.*?;", message['params']['headers']['set-cookie']) "cf_clearance=.*?;", message["params"]["headers"]["set-cookie"]
)
session_cookie = re.search( session_cookie = re.search(
"__Secure-next-auth.session-token=.*?;", message['params']['headers']['set-cookie']) "__Secure-next-auth.session-token=.*?;",
message["params"]["headers"]["set-cookie"],
)
if cf_clearance_cookie and not self.cf_cookie_found: if cf_clearance_cookie and not self.cf_cookie_found:
print("Found Cloudflare Cookie!") print("Found Cloudflare Cookie!")
# remove the semicolon and 'cf_clearance=' from the string # remove the semicolon and 'cf_clearance=' from the string
@ -513,46 +604,55 @@ class Chatbot:
self.cf_clearance = raw_cf_cookie.split("=")[1][:-1] self.cf_clearance = raw_cf_cookie.split("=")[1][:-1]
if self.verbose: if self.verbose:
print( print(
self.GREEN+"Cloudflare Cookie: "+self.ENDCOLOR + self.cf_clearance) self.GREEN
+ "Cloudflare Cookie: "
+ self.ENDCOLOR
+ self.cf_clearance
)
self.cf_cookie_found = True self.cf_cookie_found = True
if session_cookie and not self.session_cookie_found: if session_cookie and not self.session_cookie_found:
print("Found Session Token!") print("Found Session Token!")
# remove the semicolon and '__Secure-next-auth.session-token=' from the string # remove the semicolon and '__Secure-next-auth.session-token=' from the string
raw_session_cookie = session_cookie.group(0) raw_session_cookie = session_cookie.group(0)
self.session_token = raw_session_cookie.split("=")[ self.session_token = raw_session_cookie.split("=")[1][:-1]
1][:-1]
self.session.cookies.set( self.session.cookies.set(
"__Secure-next-auth.session-token", self.session_token) "__Secure-next-auth.session-token", self.session_token
)
if self.verbose: if self.verbose:
print( print(
self.GREEN+"Session Token: "+self.ENDCOLOR + self.session_token) self.GREEN
+ "Session Token: "
+ self.ENDCOLOR
+ self.session_token
)
self.session_cookie_found = True self.session_cookie_found = True
def detect_user_agent(self, message): def detect_user_agent(self, message):
if 'params' in message: if "params" in message:
if 'headers' in message['params']: if "headers" in message["params"]:
if 'user-agent' in message['params']['headers']: if "user-agent" in message["params"]["headers"]:
# Use regex to get the cookie for cf_clearance=*; # Use regex to get the cookie for cf_clearance=*;
user_agent = message['params']['headers']['user-agent'] user_agent = message["params"]["headers"]["user-agent"]
self.user_agent = user_agent self.user_agent = user_agent
self.agent_found = True self.agent_found = True
self.refresh_headers(cf_clearance=self.cf_clearance, self.refresh_headers(cf_clearance=self.cf_clearance, user_agent=self.user_agent)
user_agent=self.user_agent)
def refresh_headers(self, cf_clearance, user_agent): def refresh_headers(self, cf_clearance, user_agent):
del self.session.cookies["cf_clearance"] del self.session.cookies["cf_clearance"]
self.session.headers.clear() self.session.headers.clear()
self.session.cookies.set("cf_clearance", cf_clearance) self.session.cookies.set("cf_clearance", cf_clearance)
self.session.headers.update({ self.session.headers.update(
"Accept": "text/event-stream", {
"Authorization": "Bearer ", "Accept": "text/event-stream",
"Content-Type": "application/json", "Authorization": "Bearer ",
"User-Agent": user_agent, "Content-Type": "application/json",
"X-Openai-Assistant-App-Id": "", "User-Agent": user_agent,
"Connection": "close", "X-Openai-Assistant-App-Id": "",
"Accept-Language": "en-US,en;q=0.9", "Connection": "close",
"Referer": "https://chat.openai.com/chat", "Accept-Language": "en-US,en;q=0.9",
}) "Referer": "https://chat.openai.com/chat",
}
)
def rollback_conversation(self, num=1) -> None: def rollback_conversation(self, num=1) -> None:
""" """

View File

@ -1,148 +1,18 @@
# from typing import Any, List, Tuple from typing import Any, List, Tuple
# import os
# import sys
# from importlib import reload
# from pathlib import Path
# import dotenv
# import requests
# HTTP_USERAGENT: dict[str, str] = {
# "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"
# }
# sys.path.append(str(Path(__file__).parent.parent.parent.parent) + "/utils/NLP")
# sys.path.append(str(Path(__file__).parent.parent.parent.parent) + "/utils")
# sys.path.append(str(Path(__file__).parent.parent))
# import asyncio
# import itertools
# import re
# import aiohttp
# import config
# from bs4 import BeautifulSoup
# from normalize import normalizer
# # from relevancy import filter_irrelevant
# from sentencize import sentencizer
# from urlextract import URLExtract
# from adremover import AdRemover
# class Google:
# def __init__(
# self: "Google",
# query: str,
# GOOGLE_SEARCH_API_KEY: str,
# GOOGLE_SEARCH_ENGINE_ID: str,
# ) -> None:
# self.__GOOGLE_SEARCH_API_KEY: str = GOOGLE_SEARCH_API_KEY
# self.__GOOGLE_SEARCH_ENGINE_ID: str = GOOGLE_SEARCH_ENGINE_ID
# # if environment keys are not given, assume it is in env
# if GOOGLE_SEARCH_API_KEY == "":
# self.__GOOGLE_SEARCH_API_KEY = str(os.environ.get("GOOGLE_SEARCH_API_KEY"))
# if GOOGLE_SEARCH_ENGINE_ID == "":
# self.__GOOGLE_SEARCH_ENGINE_ID = str(os.environ.get("GOOGLE_SEARCH_ENGINE_ID"))
# self.__num_res: int = 10
# self.__query = query
# self.__URL_EXTRACTOR: URLExtract = URLExtract()
# self.__urls: list[str] = self.__URL_EXTRACTOR.find_urls(query)
# self.__query = str(
# re.sub(
# r"\w+:\/{2}[\d\w-]+(\.[\d\w-]+)*(?:(?:\/[^\s/]*))*",
# "",
# str(self.__query),
# )
# )
# def __get_urls(self: "Google") -> None:
# if self.__GOOGLE_SEARCH_API_KEY == "":
# exit("ERROR: Google API Key not found")
# if self.__GOOGLE_SEARCH_ENGINE_ID == "":
# exit("ERROR: Google Search Engine Id not found")
# response = requests.get(
# "https://www.googleapis.com/customsearch/v1",
# params={
# "key": self.__GOOGLE_SEARCH_API_KEY,
# "q": self.__query,
# "cx": self.__GOOGLE_SEARCH_ENGINE_ID,
# },
# )
# results = response.json()["items"]
# for result in results:
# self.__urls.append(result["link"])
# if len(self.__urls) == self.__num_res:
# break
# async def __fetch_url(self: "Google", session: Any, url: str) -> list[str]:
# try:
# async with session.get(url, headers=HTTP_USERAGENT) as response:
# html = await response.text()
# soup = BeautifulSoup(html, "html.parser")
# text = soup.get_text()
# normalized_text = normalizer(text)
# sentences: list[str] = sentencizer(normalized_text)
# return sentences
# except aiohttp.ClientConnectorError:
# return [""]
# except Exception:
# return [""]
# async def __fetch_urls(self: "Google", urls: list[str]) -> Any:
# async with aiohttp.ClientSession() as session:
# tasks = [
# asyncio.create_task(self.__fetch_url(session, url)) for url in urls
# ]
# results = await asyncio.gather(*tasks)
# return results
# def __flatten(self: Any, a: list[list[Any]]) -> list[Any]:
# return list(itertools.chain(*a))
# def __get_urls_contents(self: "Google") -> None:
# loop = asyncio.new_event_loop()
# asyncio.set_event_loop(loop)
# contents = loop.run_until_complete(self.__fetch_urls(self.__urls))
# loop.close()
# self.__content = self.__flatten(contents)
# def google(self: "Google") -> tuple[list[str], list[str]]:
# self.__get_urls()
# self.__get_urls_contents()
# return (self.__content, self.__urls)
# """
# Timing:
# import time
# start_time = time.time()
# google("Who is Elon Musk")
# print("--- %s seconds ---" % (time.time() - start_time))
# # Results:
# # --- 2.2230100631713867 seconds ---
# # ________________________________________________________
# # Executed in 4.73 secs fish external
# # usr time 3.35 secs 85.00 micros 3.35 secs
# # sys time 1.86 secs 956.00 micros 1.86 secs
# """
from typing import Any, Dict, List, Tuple
import asyncio
import concurrent.futures
import itertools
import os import os
import pickle import re
import sys import sys
from importlib import reload from importlib import reload
from pathlib import Path from pathlib import Path
import aiohttp
import dotenv import dotenv
import requests import requests
from bs4 import BeautifulSoup
HTTP_USERAGENT: dict[str, str] = { HTTP_USERAGENT: dict[str, str] = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3" "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"
@ -152,15 +22,8 @@ sys.path.append(str(Path(__file__).parent.parent.parent.parent) + "/utils/NLP")
sys.path.append(str(Path(__file__).parent.parent.parent.parent) + "/utils") sys.path.append(str(Path(__file__).parent.parent.parent.parent) + "/utils")
sys.path.append(str(Path(__file__).parent.parent)) sys.path.append(str(Path(__file__).parent.parent))
import asyncio
import concurrent.futures
import itertools
import re
import aiohttp
import config import config
from adremover import AdRemover from adremover import AdRemover
from bs4 import BeautifulSoup
from keywords import get_keywords from keywords import get_keywords
from normalize import normalizer from normalize import normalizer
from relevancy import filter_relevant from relevancy import filter_relevant
@ -201,7 +64,7 @@ class Google:
) )
self.__content: list[str] = [] self.__content: list[str] = []
ADBLOCK_RULES = [ ADBLOCK_RULES = [
"https://easylist-downloads.adblockplus.org/ruadlist+easylist.txt", "https://easyList-downloads.adblockplus.org/ruadList+easyList.txt",
"https://filters.adtidy.org/extension/chromium/filters/1.txt", "https://filters.adtidy.org/extension/chromium/filters/1.txt",
] ]
self.__ad_remover = AdRemover(ADBLOCK_RULES) self.__ad_remover = AdRemover(ADBLOCK_RULES)
@ -226,39 +89,37 @@ class Google:
if len(self.__urls) == self.__num_res: if len(self.__urls) == self.__num_res:
break break
async def __fetch_url(self: "Google", session: Any, url: str) -> list[str]: def __flatten(self: Any, a: list[list[Any]]) -> list[Any]:
return list(itertools.chain(*a))
async def __fetch_url(self: "Google", session: Any, url: str) -> str:
try: try:
async with session.get(url, headers=HTTP_USERAGENT) as response: async with session.get(url, headers=HTTP_USERAGENT) as response:
html = await response.text() html = await response.text()
html = self.__ad_remover.remove_ads(html) # html = self.__ad_remover.remove_ads(html)
soup = BeautifulSoup(html, "html.parser") soup = BeautifulSoup(html, "html.parser")
text = soup.get_text() text = soup.get_text()
normalized_text = normalizer(text) normalized_text = normalizer(text)
sentences: list[str] = sentencizer(normalized_text) sentences: list[str] = sentencizer(normalized_text)
return sentences sentence: str = str(" ".join(sentences))
except aiohttp.ClientConnectorError: return sentence
return [""]
except Exception: except Exception:
return [""] error: str = ""
return error
async def __fetch_urls(self: "Google", urls: list[str]) -> Any: async def __fetch_urls(self: "Google", urls: list[str]) -> list[str]:
async with aiohttp.ClientSession() as session: async with aiohttp.ClientSession() as session:
tasks = [ tasks = [
asyncio.create_task(self.__fetch_url(session, url)) for url in urls asyncio.create_task(self.__fetch_url(session, url)) for url in urls
] ]
results = await asyncio.gather(*tasks) results: list[str] = await asyncio.gather(*tasks)
return results return results
def __flatten(self: Any, a: list[list[Any]]) -> list[Any]:
return list(itertools.chain(*a))
def __get_urls_contents(self: "Google") -> None: def __get_urls_contents(self: "Google") -> None:
loop = asyncio.new_event_loop() loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop) asyncio.set_event_loop(loop)
contents = loop.run_until_complete(self.__fetch_urls(self.__urls)) self.__content = loop.run_until_complete(self.__fetch_urls(self.__urls))
loop.close() loop.close()
self.__content = self.__flatten(contents)
self.__content = [str(x) for x in self.__content]
def __filter_irrelevant_processing(self: "Google") -> None: def __filter_irrelevant_processing(self: "Google") -> None:
with concurrent.futures.ThreadPoolExecutor(max_workers=500) as executor: with concurrent.futures.ThreadPoolExecutor(max_workers=500) as executor:
@ -276,7 +137,7 @@ class Google:
self.__get_urls_contents() self.__get_urls_contents()
if filter_irrelevant: if filter_irrelevant:
self.__filter_irrelevant_processing() self.__filter_irrelevant_processing()
results: tuple[list[str], list[str]] = (self.__content, self.__urls) results: tuple[list[str], list[str]] = (self.__content[0], self.__urls) # type: ignore
return results return results

547
poetry.lock generated
View File

@ -31,127 +31,61 @@ testing = ["datasets", "deepspeed (<0.7.0)", "evaluate", "parameterized", "pytes
[[package]] [[package]]
name = "aiohttp" name = "aiohttp"
version = "3.8.3" version = "3.7.4.post0"
description = "Async http client/server framework (asyncio)" description = "Async http client/server framework (asyncio)"
category = "main" category = "main"
optional = false optional = false
python-versions = ">=3.6" python-versions = ">=3.6"
files = [ files = [
{file = "aiohttp-3.8.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ba71c9b4dcbb16212f334126cc3d8beb6af377f6703d9dc2d9fb3874fd667ee9"}, {file = "aiohttp-3.7.4.post0-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:3cf75f7cdc2397ed4442594b935a11ed5569961333d49b7539ea741be2cc79d5"},
{file = "aiohttp-3.8.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d24b8bb40d5c61ef2d9b6a8f4528c2f17f1c5d2d31fed62ec860f6006142e83e"}, {file = "aiohttp-3.7.4.post0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:4b302b45040890cea949ad092479e01ba25911a15e648429c7c5aae9650c67a8"},
{file = "aiohttp-3.8.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f88df3a83cf9df566f171adba39d5bd52814ac0b94778d2448652fc77f9eb491"}, {file = "aiohttp-3.7.4.post0-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:fe60131d21b31fd1a14bd43e6bb88256f69dfc3188b3a89d736d6c71ed43ec95"},
{file = "aiohttp-3.8.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b97decbb3372d4b69e4d4c8117f44632551c692bb1361b356a02b97b69e18a62"}, {file = "aiohttp-3.7.4.post0-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:393f389841e8f2dfc86f774ad22f00923fdee66d238af89b70ea314c4aefd290"},
{file = "aiohttp-3.8.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:309aa21c1d54b8ef0723181d430347d7452daaff93e8e2363db8e75c72c2fb2d"}, {file = "aiohttp-3.7.4.post0-cp36-cp36m-manylinux2014_ppc64le.whl", hash = "sha256:c6e9dcb4cb338d91a73f178d866d051efe7c62a7166653a91e7d9fb18274058f"},
{file = "aiohttp-3.8.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ad5383a67514e8e76906a06741febd9126fc7c7ff0f599d6fcce3e82b80d026f"}, {file = "aiohttp-3.7.4.post0-cp36-cp36m-manylinux2014_s390x.whl", hash = "sha256:5df68496d19f849921f05f14f31bd6ef53ad4b00245da3195048c69934521809"},
{file = "aiohttp-3.8.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20acae4f268317bb975671e375493dbdbc67cddb5f6c71eebdb85b34444ac46b"}, {file = "aiohttp-3.7.4.post0-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:0563c1b3826945eecd62186f3f5c7d31abb7391fedc893b7e2b26303b5a9f3fe"},
{file = "aiohttp-3.8.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:05a3c31c6d7cd08c149e50dc7aa2568317f5844acd745621983380597f027a18"}, {file = "aiohttp-3.7.4.post0-cp36-cp36m-win32.whl", hash = "sha256:3d78619672183be860b96ed96f533046ec97ca067fd46ac1f6a09cd9b7484287"},
{file = "aiohttp-3.8.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d6f76310355e9fae637c3162936e9504b4767d5c52ca268331e2756e54fd4ca5"}, {file = "aiohttp-3.7.4.post0-cp36-cp36m-win_amd64.whl", hash = "sha256:f705e12750171c0ab4ef2a3c76b9a4024a62c4103e3a55dd6f99265b9bc6fcfc"},
{file = "aiohttp-3.8.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:256deb4b29fe5e47893fa32e1de2d73c3afe7407738bd3c63829874661d4822d"}, {file = "aiohttp-3.7.4.post0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:230a8f7e24298dea47659251abc0fd8b3c4e38a664c59d4b89cca7f6c09c9e87"},
{file = "aiohttp-3.8.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:5c59fcd80b9049b49acd29bd3598cada4afc8d8d69bd4160cd613246912535d7"}, {file = "aiohttp-3.7.4.post0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:2e19413bf84934d651344783c9f5e22dee452e251cfd220ebadbed2d9931dbf0"},
{file = "aiohttp-3.8.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:059a91e88f2c00fe40aed9031b3606c3f311414f86a90d696dd982e7aec48142"}, {file = "aiohttp-3.7.4.post0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:e4b2b334e68b18ac9817d828ba44d8fcb391f6acb398bcc5062b14b2cbeac970"},
{file = "aiohttp-3.8.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2feebbb6074cdbd1ac276dbd737b40e890a1361b3cc30b74ac2f5e24aab41f7b"}, {file = "aiohttp-3.7.4.post0-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:d012ad7911653a906425d8473a1465caa9f8dea7fcf07b6d870397b774ea7c0f"},
{file = "aiohttp-3.8.3-cp310-cp310-win32.whl", hash = "sha256:5bf651afd22d5f0c4be16cf39d0482ea494f5c88f03e75e5fef3a85177fecdeb"}, {file = "aiohttp-3.7.4.post0-cp37-cp37m-manylinux2014_ppc64le.whl", hash = "sha256:40eced07f07a9e60e825554a31f923e8d3997cfc7fb31dbc1328c70826e04cde"},
{file = "aiohttp-3.8.3-cp310-cp310-win_amd64.whl", hash = "sha256:653acc3880459f82a65e27bd6526e47ddf19e643457d36a2250b85b41a564715"}, {file = "aiohttp-3.7.4.post0-cp37-cp37m-manylinux2014_s390x.whl", hash = "sha256:209b4a8ee987eccc91e2bd3ac36adee0e53a5970b8ac52c273f7f8fd4872c94c"},
{file = "aiohttp-3.8.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:86fc24e58ecb32aee09f864cb11bb91bc4c1086615001647dbfc4dc8c32f4008"}, {file = "aiohttp-3.7.4.post0-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:14762875b22d0055f05d12abc7f7d61d5fd4fe4642ce1a249abdf8c700bf1fd8"},
{file = "aiohttp-3.8.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:75e14eac916f024305db517e00a9252714fce0abcb10ad327fb6dcdc0d060f1d"}, {file = "aiohttp-3.7.4.post0-cp37-cp37m-win32.whl", hash = "sha256:7615dab56bb07bff74bc865307aeb89a8bfd9941d2ef9d817b9436da3a0ea54f"},
{file = "aiohttp-3.8.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d1fde0f44029e02d02d3993ad55ce93ead9bb9b15c6b7ccd580f90bd7e3de476"}, {file = "aiohttp-3.7.4.post0-cp37-cp37m-win_amd64.whl", hash = "sha256:d9e13b33afd39ddeb377eff2c1c4f00544e191e1d1dee5b6c51ddee8ea6f0cf5"},
{file = "aiohttp-3.8.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ab94426ddb1ecc6a0b601d832d5d9d421820989b8caa929114811369673235c"}, {file = "aiohttp-3.7.4.post0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:547da6cacac20666422d4882cfcd51298d45f7ccb60a04ec27424d2f36ba3eaf"},
{file = "aiohttp-3.8.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:89d2e02167fa95172c017732ed7725bc8523c598757f08d13c5acca308e1a061"}, {file = "aiohttp-3.7.4.post0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:af9aa9ef5ba1fd5b8c948bb11f44891968ab30356d65fd0cc6707d989cd521df"},
{file = "aiohttp-3.8.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:02f9a2c72fc95d59b881cf38a4b2be9381b9527f9d328771e90f72ac76f31ad8"}, {file = "aiohttp-3.7.4.post0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:64322071e046020e8797117b3658b9c2f80e3267daec409b350b6a7a05041213"},
{file = "aiohttp-3.8.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c7149272fb5834fc186328e2c1fa01dda3e1fa940ce18fded6d412e8f2cf76d"}, {file = "aiohttp-3.7.4.post0-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:bb437315738aa441251214dad17428cafda9cdc9729499f1d6001748e1d432f4"},
{file = "aiohttp-3.8.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:512bd5ab136b8dc0ffe3fdf2dfb0c4b4f49c8577f6cae55dca862cd37a4564e2"}, {file = "aiohttp-3.7.4.post0-cp38-cp38-manylinux2014_ppc64le.whl", hash = "sha256:e54962802d4b8b18b6207d4a927032826af39395a3bd9196a5af43fc4e60b009"},
{file = "aiohttp-3.8.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7018ecc5fe97027214556afbc7c502fbd718d0740e87eb1217b17efd05b3d276"}, {file = "aiohttp-3.7.4.post0-cp38-cp38-manylinux2014_s390x.whl", hash = "sha256:a00bb73540af068ca7390e636c01cbc4f644961896fa9363154ff43fd37af2f5"},
{file = "aiohttp-3.8.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:88c70ed9da9963d5496d38320160e8eb7e5f1886f9290475a881db12f351ab5d"}, {file = "aiohttp-3.7.4.post0-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:79ebfc238612123a713a457d92afb4096e2148be17df6c50fb9bf7a81c2f8013"},
{file = "aiohttp-3.8.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:da22885266bbfb3f78218dc40205fed2671909fbd0720aedba39b4515c038091"}, {file = "aiohttp-3.7.4.post0-cp38-cp38-win32.whl", hash = "sha256:515dfef7f869a0feb2afee66b957cc7bbe9ad0cdee45aec7fdc623f4ecd4fb16"},
{file = "aiohttp-3.8.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:e65bc19919c910127c06759a63747ebe14f386cda573d95bcc62b427ca1afc73"}, {file = "aiohttp-3.7.4.post0-cp38-cp38-win_amd64.whl", hash = "sha256:114b281e4d68302a324dd33abb04778e8557d88947875cbf4e842c2c01a030c5"},
{file = "aiohttp-3.8.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:08c78317e950e0762c2983f4dd58dc5e6c9ff75c8a0efeae299d363d439c8e34"}, {file = "aiohttp-3.7.4.post0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:7b18b97cf8ee5452fa5f4e3af95d01d84d86d32c5e2bfa260cf041749d66360b"},
{file = "aiohttp-3.8.3-cp311-cp311-win32.whl", hash = "sha256:45d88b016c849d74ebc6f2b6e8bc17cabf26e7e40c0661ddd8fae4c00f015697"}, {file = "aiohttp-3.7.4.post0-cp39-cp39-manylinux1_i686.whl", hash = "sha256:15492a6368d985b76a2a5fdd2166cddfea5d24e69eefed4630cbaae5c81d89bd"},
{file = "aiohttp-3.8.3-cp311-cp311-win_amd64.whl", hash = "sha256:96372fc29471646b9b106ee918c8eeb4cca423fcbf9a34daa1b93767a88a2290"}, {file = "aiohttp-3.7.4.post0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:bdb230b4943891321e06fc7def63c7aace16095be7d9cf3b1e01be2f10fba439"},
{file = "aiohttp-3.8.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:c971bf3786b5fad82ce5ad570dc6ee420f5b12527157929e830f51c55dc8af77"}, {file = "aiohttp-3.7.4.post0-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:cffe3ab27871bc3ea47df5d8f7013945712c46a3cc5a95b6bee15887f1675c22"},
{file = "aiohttp-3.8.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ff25f48fc8e623d95eca0670b8cc1469a83783c924a602e0fbd47363bb54aaca"}, {file = "aiohttp-3.7.4.post0-cp39-cp39-manylinux2014_ppc64le.whl", hash = "sha256:f881853d2643a29e643609da57b96d5f9c9b93f62429dcc1cbb413c7d07f0e1a"},
{file = "aiohttp-3.8.3-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e381581b37db1db7597b62a2e6b8b57c3deec95d93b6d6407c5b61ddc98aca6d"}, {file = "aiohttp-3.7.4.post0-cp39-cp39-manylinux2014_s390x.whl", hash = "sha256:a5ca29ee66f8343ed336816c553e82d6cade48a3ad702b9ffa6125d187e2dedb"},
{file = "aiohttp-3.8.3-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:db19d60d846283ee275d0416e2a23493f4e6b6028825b51290ac05afc87a6f97"}, {file = "aiohttp-3.7.4.post0-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:17c073de315745a1510393a96e680d20af8e67e324f70b42accbd4cb3315c9fb"},
{file = "aiohttp-3.8.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25892c92bee6d9449ffac82c2fe257f3a6f297792cdb18ad784737d61e7a9a85"}, {file = "aiohttp-3.7.4.post0-cp39-cp39-win32.whl", hash = "sha256:932bb1ea39a54e9ea27fc9232163059a0b8855256f4052e776357ad9add6f1c9"},
{file = "aiohttp-3.8.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:398701865e7a9565d49189f6c90868efaca21be65c725fc87fc305906be915da"}, {file = "aiohttp-3.7.4.post0-cp39-cp39-win_amd64.whl", hash = "sha256:02f46fc0e3c5ac58b80d4d56eb0a7c7d97fcef69ace9326289fb9f1955e65cfe"},
{file = "aiohttp-3.8.3-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:4a4fbc769ea9b6bd97f4ad0b430a6807f92f0e5eb020f1e42ece59f3ecfc4585"}, {file = "aiohttp-3.7.4.post0.tar.gz", hash = "sha256:493d3299ebe5f5a7c66b9819eacdcfbbaaf1a8e84911ddffcdc48888497afecf"},
{file = "aiohttp-3.8.3-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:b29bfd650ed8e148f9c515474a6ef0ba1090b7a8faeee26b74a8ff3b33617502"},
{file = "aiohttp-3.8.3-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:1e56b9cafcd6531bab5d9b2e890bb4937f4165109fe98e2b98ef0dcfcb06ee9d"},
{file = "aiohttp-3.8.3-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:ec40170327d4a404b0d91855d41bfe1fe4b699222b2b93e3d833a27330a87a6d"},
{file = "aiohttp-3.8.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:2df5f139233060578d8c2c975128fb231a89ca0a462b35d4b5fcf7c501ebdbe1"},
{file = "aiohttp-3.8.3-cp36-cp36m-win32.whl", hash = "sha256:f973157ffeab5459eefe7b97a804987876dd0a55570b8fa56b4e1954bf11329b"},
{file = "aiohttp-3.8.3-cp36-cp36m-win_amd64.whl", hash = "sha256:437399385f2abcd634865705bdc180c8314124b98299d54fe1d4c8990f2f9494"},
{file = "aiohttp-3.8.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:09e28f572b21642128ef31f4e8372adb6888846f32fecb288c8b0457597ba61a"},
{file = "aiohttp-3.8.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f3553510abdbec67c043ca85727396ceed1272eef029b050677046d3387be8d"},
{file = "aiohttp-3.8.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e168a7560b7c61342ae0412997b069753f27ac4862ec7867eff74f0fe4ea2ad9"},
{file = "aiohttp-3.8.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:db4c979b0b3e0fa7e9e69ecd11b2b3174c6963cebadeecfb7ad24532ffcdd11a"},
{file = "aiohttp-3.8.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e164e0a98e92d06da343d17d4e9c4da4654f4a4588a20d6c73548a29f176abe2"},
{file = "aiohttp-3.8.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8a78079d9a39ca9ca99a8b0ac2fdc0c4d25fc80c8a8a82e5c8211509c523363"},
{file = "aiohttp-3.8.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:21b30885a63c3f4ff5b77a5d6caf008b037cb521a5f33eab445dc566f6d092cc"},
{file = "aiohttp-3.8.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4b0f30372cef3fdc262f33d06e7b411cd59058ce9174ef159ad938c4a34a89da"},
{file = "aiohttp-3.8.3-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:8135fa153a20d82ffb64f70a1b5c2738684afa197839b34cc3e3c72fa88d302c"},
{file = "aiohttp-3.8.3-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:ad61a9639792fd790523ba072c0555cd6be5a0baf03a49a5dd8cfcf20d56df48"},
{file = "aiohttp-3.8.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:978b046ca728073070e9abc074b6299ebf3501e8dee5e26efacb13cec2b2dea0"},
{file = "aiohttp-3.8.3-cp37-cp37m-win32.whl", hash = "sha256:0d2c6d8c6872df4a6ec37d2ede71eff62395b9e337b4e18efd2177de883a5033"},
{file = "aiohttp-3.8.3-cp37-cp37m-win_amd64.whl", hash = "sha256:21d69797eb951f155026651f7e9362877334508d39c2fc37bd04ff55b2007091"},
{file = "aiohttp-3.8.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ca9af5f8f5812d475c5259393f52d712f6d5f0d7fdad9acdb1107dd9e3cb7eb"},
{file = "aiohttp-3.8.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d90043c1882067f1bd26196d5d2db9aa6d268def3293ed5fb317e13c9413ea4"},
{file = "aiohttp-3.8.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d737fc67b9a970f3234754974531dc9afeea11c70791dcb7db53b0cf81b79784"},
{file = "aiohttp-3.8.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebf909ea0a3fc9596e40d55d8000702a85e27fd578ff41a5500f68f20fd32e6c"},
{file = "aiohttp-3.8.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5835f258ca9f7c455493a57ee707b76d2d9634d84d5d7f62e77be984ea80b849"},
{file = "aiohttp-3.8.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da37dcfbf4b7f45d80ee386a5f81122501ec75672f475da34784196690762f4b"},
{file = "aiohttp-3.8.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87f44875f2804bc0511a69ce44a9595d5944837a62caecc8490bbdb0e18b1342"},
{file = "aiohttp-3.8.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:527b3b87b24844ea7865284aabfab08eb0faf599b385b03c2aa91fc6edd6e4b6"},
{file = "aiohttp-3.8.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d5ba88df9aa5e2f806650fcbeedbe4f6e8736e92fc0e73b0400538fd25a4dd96"},
{file = "aiohttp-3.8.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:e7b8813be97cab8cb52b1375f41f8e6804f6507fe4660152e8ca5c48f0436017"},
{file = "aiohttp-3.8.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:2dea10edfa1a54098703cb7acaa665c07b4e7568472a47f4e64e6319d3821ccf"},
{file = "aiohttp-3.8.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:713d22cd9643ba9025d33c4af43943c7a1eb8547729228de18d3e02e278472b6"},
{file = "aiohttp-3.8.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2d252771fc85e0cf8da0b823157962d70639e63cb9b578b1dec9868dd1f4f937"},
{file = "aiohttp-3.8.3-cp38-cp38-win32.whl", hash = "sha256:66bd5f950344fb2b3dbdd421aaa4e84f4411a1a13fca3aeb2bcbe667f80c9f76"},
{file = "aiohttp-3.8.3-cp38-cp38-win_amd64.whl", hash = "sha256:84b14f36e85295fe69c6b9789b51a0903b774046d5f7df538176516c3e422446"},
{file = "aiohttp-3.8.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:16c121ba0b1ec2b44b73e3a8a171c4f999b33929cd2397124a8c7fcfc8cd9e06"},
{file = "aiohttp-3.8.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8d6aaa4e7155afaf994d7924eb290abbe81a6905b303d8cb61310a2aba1c68ba"},
{file = "aiohttp-3.8.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:43046a319664a04b146f81b40e1545d4c8ac7b7dd04c47e40bf09f65f2437346"},
{file = "aiohttp-3.8.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:599418aaaf88a6d02a8c515e656f6faf3d10618d3dd95866eb4436520096c84b"},
{file = "aiohttp-3.8.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:92a2964319d359f494f16011e23434f6f8ef0434acd3cf154a6b7bec511e2fb7"},
{file = "aiohttp-3.8.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:73a4131962e6d91109bca6536416aa067cf6c4efb871975df734f8d2fd821b37"},
{file = "aiohttp-3.8.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:598adde339d2cf7d67beaccda3f2ce7c57b3b412702f29c946708f69cf8222aa"},
{file = "aiohttp-3.8.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:75880ed07be39beff1881d81e4a907cafb802f306efd6d2d15f2b3c69935f6fb"},
{file = "aiohttp-3.8.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a0239da9fbafd9ff82fd67c16704a7d1bccf0d107a300e790587ad05547681c8"},
{file = "aiohttp-3.8.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:4e3a23ec214e95c9fe85a58470b660efe6534b83e6cbe38b3ed52b053d7cb6ad"},
{file = "aiohttp-3.8.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:47841407cc89a4b80b0c52276f3cc8138bbbfba4b179ee3acbd7d77ae33f7ac4"},
{file = "aiohttp-3.8.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:54d107c89a3ebcd13228278d68f1436d3f33f2dd2af5415e3feaeb1156e1a62c"},
{file = "aiohttp-3.8.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c37c5cce780349d4d51739ae682dec63573847a2a8dcb44381b174c3d9c8d403"},
{file = "aiohttp-3.8.3-cp39-cp39-win32.whl", hash = "sha256:f178d2aadf0166be4df834c4953da2d7eef24719e8aec9a65289483eeea9d618"},
{file = "aiohttp-3.8.3-cp39-cp39-win_amd64.whl", hash = "sha256:88e5be56c231981428f4f506c68b6a46fa25c4123a2e86d156c58a8369d31ab7"},
{file = "aiohttp-3.8.3.tar.gz", hash = "sha256:3828fb41b7203176b82fe5d699e0d845435f2374750a44b480ea6b930f6be269"},
] ]
[package.dependencies] [package.dependencies]
aiosignal = ">=1.1.2" async-timeout = ">=3.0,<4.0"
async-timeout = ">=4.0.0a3,<5.0"
attrs = ">=17.3.0" attrs = ">=17.3.0"
charset-normalizer = ">=2.0,<3.0" chardet = ">=2.0,<5.0"
frozenlist = ">=1.1.1"
multidict = ">=4.5,<7.0" multidict = ">=4.5,<7.0"
typing-extensions = ">=3.6.5"
yarl = ">=1.0,<2.0" yarl = ">=1.0,<2.0"
[package.extras] [package.extras]
speedups = ["Brotli", "aiodns", "cchardet"] speedups = ["aiodns", "brotlipy", "cchardet"]
[[package]]
name = "aiosignal"
version = "1.3.1"
description = "aiosignal: a list of registered asynchronous callbacks"
category = "main"
optional = false
python-versions = ">=3.7"
files = [
{file = "aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"},
{file = "aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc"},
]
[package.dependencies]
frozenlist = ">=1.1.0"
[[package]] [[package]]
name = "anyascii" name = "anyascii"
@ -199,14 +133,14 @@ files = [
[[package]] [[package]]
name = "async-timeout" name = "async-timeout"
version = "4.0.2" version = "3.0.1"
description = "Timeout context manager for asyncio programs" description = "Timeout context manager for asyncio programs"
category = "main" category = "main"
optional = false optional = false
python-versions = ">=3.6" python-versions = ">=3.5.3"
files = [ files = [
{file = "async-timeout-4.0.2.tar.gz", hash = "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15"}, {file = "async-timeout-3.0.1.tar.gz", hash = "sha256:0c3c816a028d47f659d6ff5c745cb2acf1f966da1fe5c19c77a70282b25f4c5f"},
{file = "async_timeout-4.0.2-py3-none-any.whl", hash = "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c"}, {file = "async_timeout-3.0.1-py3-none-any.whl", hash = "sha256:4291ca197d287d274d0b6cb5d6f8f8f82d434ed288f962539ff18cc9012f9ea3"},
] ]
[[package]] [[package]]
@ -460,21 +394,116 @@ files = [
{file = "cfgv-3.3.1.tar.gz", hash = "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736"}, {file = "cfgv-3.3.1.tar.gz", hash = "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736"},
] ]
[[package]]
name = "chardet"
version = "4.0.0"
description = "Universal encoding detector for Python 2 and 3"
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
files = [
{file = "chardet-4.0.0-py2.py3-none-any.whl", hash = "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5"},
{file = "chardet-4.0.0.tar.gz", hash = "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa"},
]
[[package]] [[package]]
name = "charset-normalizer" name = "charset-normalizer"
version = "2.1.1" version = "3.0.1"
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
category = "main" category = "main"
optional = false optional = false
python-versions = ">=3.6.0" python-versions = "*"
files = [ files = [
{file = "charset-normalizer-2.1.1.tar.gz", hash = "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845"}, {file = "charset-normalizer-3.0.1.tar.gz", hash = "sha256:ebea339af930f8ca5d7a699b921106c6e29c617fe9606fa7baa043c1cdae326f"},
{file = "charset_normalizer-2.1.1-py3-none-any.whl", hash = "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"}, {file = "charset_normalizer-3.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:88600c72ef7587fe1708fd242b385b6ed4b8904976d5da0893e31df8b3480cb6"},
{file = "charset_normalizer-3.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c75ffc45f25324e68ab238cb4b5c0a38cd1c3d7f1fb1f72b5541de469e2247db"},
{file = "charset_normalizer-3.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:db72b07027db150f468fbada4d85b3b2729a3db39178abf5c543b784c1254539"},
{file = "charset_normalizer-3.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62595ab75873d50d57323a91dd03e6966eb79c41fa834b7a1661ed043b2d404d"},
{file = "charset_normalizer-3.0.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ff6f3db31555657f3163b15a6b7c6938d08df7adbfc9dd13d9d19edad678f1e8"},
{file = "charset_normalizer-3.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:772b87914ff1152b92a197ef4ea40efe27a378606c39446ded52c8f80f79702e"},
{file = "charset_normalizer-3.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70990b9c51340e4044cfc394a81f614f3f90d41397104d226f21e66de668730d"},
{file = "charset_normalizer-3.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:292d5e8ba896bbfd6334b096e34bffb56161c81408d6d036a7dfa6929cff8783"},
{file = "charset_normalizer-3.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:2edb64ee7bf1ed524a1da60cdcd2e1f6e2b4f66ef7c077680739f1641f62f555"},
{file = "charset_normalizer-3.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:31a9ddf4718d10ae04d9b18801bd776693487cbb57d74cc3458a7673f6f34639"},
{file = "charset_normalizer-3.0.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:44ba614de5361b3e5278e1241fda3dc1838deed864b50a10d7ce92983797fa76"},
{file = "charset_normalizer-3.0.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:12db3b2c533c23ab812c2b25934f60383361f8a376ae272665f8e48b88e8e1c6"},
{file = "charset_normalizer-3.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c512accbd6ff0270939b9ac214b84fb5ada5f0409c44298361b2f5e13f9aed9e"},
{file = "charset_normalizer-3.0.1-cp310-cp310-win32.whl", hash = "sha256:502218f52498a36d6bf5ea77081844017bf7982cdbe521ad85e64cabee1b608b"},
{file = "charset_normalizer-3.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:601f36512f9e28f029d9481bdaf8e89e5148ac5d89cffd3b05cd533eeb423b59"},
{file = "charset_normalizer-3.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0298eafff88c99982a4cf66ba2efa1128e4ddaca0b05eec4c456bbc7db691d8d"},
{file = "charset_normalizer-3.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a8d0fc946c784ff7f7c3742310cc8a57c5c6dc31631269876a88b809dbeff3d3"},
{file = "charset_normalizer-3.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:87701167f2a5c930b403e9756fab1d31d4d4da52856143b609e30a1ce7160f3c"},
{file = "charset_normalizer-3.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14e76c0f23218b8f46c4d87018ca2e441535aed3632ca134b10239dfb6dadd6b"},
{file = "charset_normalizer-3.0.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0c0a590235ccd933d9892c627dec5bc7511ce6ad6c1011fdf5b11363022746c1"},
{file = "charset_normalizer-3.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8c7fe7afa480e3e82eed58e0ca89f751cd14d767638e2550c77a92a9e749c317"},
{file = "charset_normalizer-3.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:79909e27e8e4fcc9db4addea88aa63f6423ebb171db091fb4373e3312cb6d603"},
{file = "charset_normalizer-3.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ac7b6a045b814cf0c47f3623d21ebd88b3e8cf216a14790b455ea7ff0135d18"},
{file = "charset_normalizer-3.0.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:72966d1b297c741541ca8cf1223ff262a6febe52481af742036a0b296e35fa5a"},
{file = "charset_normalizer-3.0.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f9d0c5c045a3ca9bedfc35dca8526798eb91a07aa7a2c0fee134c6c6f321cbd7"},
{file = "charset_normalizer-3.0.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:5995f0164fa7df59db4746112fec3f49c461dd6b31b841873443bdb077c13cfc"},
{file = "charset_normalizer-3.0.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4a8fcf28c05c1f6d7e177a9a46a1c52798bfe2ad80681d275b10dcf317deaf0b"},
{file = "charset_normalizer-3.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:761e8904c07ad053d285670f36dd94e1b6ab7f16ce62b9805c475b7aa1cffde6"},
{file = "charset_normalizer-3.0.1-cp311-cp311-win32.whl", hash = "sha256:71140351489970dfe5e60fc621ada3e0f41104a5eddaca47a7acb3c1b851d6d3"},
{file = "charset_normalizer-3.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:9ab77acb98eba3fd2a85cd160851816bfce6871d944d885febf012713f06659c"},
{file = "charset_normalizer-3.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:84c3990934bae40ea69a82034912ffe5a62c60bbf6ec5bc9691419641d7d5c9a"},
{file = "charset_normalizer-3.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74292fc76c905c0ef095fe11e188a32ebd03bc38f3f3e9bcb85e4e6db177b7ea"},
{file = "charset_normalizer-3.0.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c95a03c79bbe30eec3ec2b7f076074f4281526724c8685a42872974ef4d36b72"},
{file = "charset_normalizer-3.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4c39b0e3eac288fedc2b43055cfc2ca7a60362d0e5e87a637beac5d801ef478"},
{file = "charset_normalizer-3.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:df2c707231459e8a4028eabcd3cfc827befd635b3ef72eada84ab13b52e1574d"},
{file = "charset_normalizer-3.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93ad6d87ac18e2a90b0fe89df7c65263b9a99a0eb98f0a3d2e079f12a0735837"},
{file = "charset_normalizer-3.0.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:59e5686dd847347e55dffcc191a96622f016bc0ad89105e24c14e0d6305acbc6"},
{file = "charset_normalizer-3.0.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:cd6056167405314a4dc3c173943f11249fa0f1b204f8b51ed4bde1a9cd1834dc"},
{file = "charset_normalizer-3.0.1-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:083c8d17153ecb403e5e1eb76a7ef4babfc2c48d58899c98fcaa04833e7a2f9a"},
{file = "charset_normalizer-3.0.1-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:f5057856d21e7586765171eac8b9fc3f7d44ef39425f85dbcccb13b3ebea806c"},
{file = "charset_normalizer-3.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:7eb33a30d75562222b64f569c642ff3dc6689e09adda43a082208397f016c39a"},
{file = "charset_normalizer-3.0.1-cp36-cp36m-win32.whl", hash = "sha256:95dea361dd73757c6f1c0a1480ac499952c16ac83f7f5f4f84f0658a01b8ef41"},
{file = "charset_normalizer-3.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:eaa379fcd227ca235d04152ca6704c7cb55564116f8bc52545ff357628e10602"},
{file = "charset_normalizer-3.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3e45867f1f2ab0711d60c6c71746ac53537f1684baa699f4f668d4c6f6ce8e14"},
{file = "charset_normalizer-3.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cadaeaba78750d58d3cc6ac4d1fd867da6fc73c88156b7a3212a3cd4819d679d"},
{file = "charset_normalizer-3.0.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:911d8a40b2bef5b8bbae2e36a0b103f142ac53557ab421dc16ac4aafee6f53dc"},
{file = "charset_normalizer-3.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:503e65837c71b875ecdd733877d852adbc465bd82c768a067badd953bf1bc5a3"},
{file = "charset_normalizer-3.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a60332922359f920193b1d4826953c507a877b523b2395ad7bc716ddd386d866"},
{file = "charset_normalizer-3.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:16a8663d6e281208d78806dbe14ee9903715361cf81f6d4309944e4d1e59ac5b"},
{file = "charset_normalizer-3.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:a16418ecf1329f71df119e8a65f3aa68004a3f9383821edcb20f0702934d8087"},
{file = "charset_normalizer-3.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:9d9153257a3f70d5f69edf2325357251ed20f772b12e593f3b3377b5f78e7ef8"},
{file = "charset_normalizer-3.0.1-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:02a51034802cbf38db3f89c66fb5d2ec57e6fe7ef2f4a44d070a593c3688667b"},
{file = "charset_normalizer-3.0.1-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:2e396d70bc4ef5325b72b593a72c8979999aa52fb8bcf03f701c1b03e1166918"},
{file = "charset_normalizer-3.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:11b53acf2411c3b09e6af37e4b9005cba376c872503c8f28218c7243582df45d"},
{file = "charset_normalizer-3.0.1-cp37-cp37m-win32.whl", hash = "sha256:0bf2dae5291758b6f84cf923bfaa285632816007db0330002fa1de38bfcb7154"},
{file = "charset_normalizer-3.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:2c03cc56021a4bd59be889c2b9257dae13bf55041a3372d3295416f86b295fb5"},
{file = "charset_normalizer-3.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:024e606be3ed92216e2b6952ed859d86b4cfa52cd5bc5f050e7dc28f9b43ec42"},
{file = "charset_normalizer-3.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4b0d02d7102dd0f997580b51edc4cebcf2ab6397a7edf89f1c73b586c614272c"},
{file = "charset_normalizer-3.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:358a7c4cb8ba9b46c453b1dd8d9e431452d5249072e4f56cfda3149f6ab1405e"},
{file = "charset_normalizer-3.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81d6741ab457d14fdedc215516665050f3822d3e56508921cc7239f8c8e66a58"},
{file = "charset_normalizer-3.0.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8b8af03d2e37866d023ad0ddea594edefc31e827fee64f8de5611a1dbc373174"},
{file = "charset_normalizer-3.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9cf4e8ad252f7c38dd1f676b46514f92dc0ebeb0db5552f5f403509705e24753"},
{file = "charset_normalizer-3.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e696f0dd336161fca9adbb846875d40752e6eba585843c768935ba5c9960722b"},
{file = "charset_normalizer-3.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c22d3fe05ce11d3671297dc8973267daa0f938b93ec716e12e0f6dee81591dc1"},
{file = "charset_normalizer-3.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:109487860ef6a328f3eec66f2bf78b0b72400280d8f8ea05f69c51644ba6521a"},
{file = "charset_normalizer-3.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:37f8febc8ec50c14f3ec9637505f28e58d4f66752207ea177c1d67df25da5aed"},
{file = "charset_normalizer-3.0.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:f97e83fa6c25693c7a35de154681fcc257c1c41b38beb0304b9c4d2d9e164479"},
{file = "charset_normalizer-3.0.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a152f5f33d64a6be73f1d30c9cc82dfc73cec6477ec268e7c6e4c7d23c2d2291"},
{file = "charset_normalizer-3.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:39049da0ffb96c8cbb65cbf5c5f3ca3168990adf3551bd1dee10c48fce8ae820"},
{file = "charset_normalizer-3.0.1-cp38-cp38-win32.whl", hash = "sha256:4457ea6774b5611f4bed5eaa5df55f70abde42364d498c5134b7ef4c6958e20e"},
{file = "charset_normalizer-3.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:e62164b50f84e20601c1ff8eb55620d2ad25fb81b59e3cd776a1902527a788af"},
{file = "charset_normalizer-3.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8eade758719add78ec36dc13201483f8e9b5d940329285edcd5f70c0a9edbd7f"},
{file = "charset_normalizer-3.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8499ca8f4502af841f68135133d8258f7b32a53a1d594aa98cc52013fff55678"},
{file = "charset_normalizer-3.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3fc1c4a2ffd64890aebdb3f97e1278b0cc72579a08ca4de8cd2c04799a3a22be"},
{file = "charset_normalizer-3.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00d3ffdaafe92a5dc603cb9bd5111aaa36dfa187c8285c543be562e61b755f6b"},
{file = "charset_normalizer-3.0.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2ac1b08635a8cd4e0cbeaf6f5e922085908d48eb05d44c5ae9eabab148512ca"},
{file = "charset_normalizer-3.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f6f45710b4459401609ebebdbcfb34515da4fc2aa886f95107f556ac69a9147e"},
{file = "charset_normalizer-3.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ae1de54a77dc0d6d5fcf623290af4266412a7c4be0b1ff7444394f03f5c54e3"},
{file = "charset_normalizer-3.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3b590df687e3c5ee0deef9fc8c547d81986d9a1b56073d82de008744452d6541"},
{file = "charset_normalizer-3.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab5de034a886f616a5668aa5d098af2b5385ed70142090e2a31bcbd0af0fdb3d"},
{file = "charset_normalizer-3.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9cb3032517f1627cc012dbc80a8ec976ae76d93ea2b5feaa9d2a5b8882597579"},
{file = "charset_normalizer-3.0.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:608862a7bf6957f2333fc54ab4399e405baad0163dc9f8d99cb236816db169d4"},
{file = "charset_normalizer-3.0.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0f438ae3532723fb6ead77e7c604be7c8374094ef4ee2c5e03a3a17f1fca256c"},
{file = "charset_normalizer-3.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:356541bf4381fa35856dafa6a965916e54bed415ad8a24ee6de6e37deccf2786"},
{file = "charset_normalizer-3.0.1-cp39-cp39-win32.whl", hash = "sha256:39cf9ed17fe3b1bc81f33c9ceb6ce67683ee7526e65fde1447c772afc54a1bb8"},
{file = "charset_normalizer-3.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:0a11e971ed097d24c534c037d298ad32c6ce81a45736d31e0ff0ad37ab437d59"},
{file = "charset_normalizer-3.0.1-py3-none-any.whl", hash = "sha256:7e189e2e1d3ed2f4aebabd2d5b0f931e883676e51c7624826e0a4e5fe8a0bf24"},
] ]
[package.extras]
unicode-backport = ["unicodedata2"]
[[package]] [[package]]
name = "click" name = "click"
version = "8.1.3" version = "8.1.3"
@ -519,14 +548,14 @@ test = ["flake8 (==3.7.8)", "hypothesis (==3.55.3)"]
[[package]] [[package]]
name = "confection" name = "confection"
version = "0.0.3" version = "0.0.4"
description = "The sweetest config system for Python" description = "The sweetest config system for Python"
category = "main" category = "main"
optional = false optional = false
python-versions = ">=3.6" python-versions = ">=3.6"
files = [ files = [
{file = "confection-0.0.3-py3-none-any.whl", hash = "sha256:51af839c1240430421da2b248541ebc95f9d0ee385bcafa768b8acdbd2b0111d"}, {file = "confection-0.0.4-py3-none-any.whl", hash = "sha256:aeac5919ba770c7b281aa5863bb6b0efed42568a7ad8ea26b6cb632154503fb2"},
{file = "confection-0.0.3.tar.gz", hash = "sha256:4fec47190057c43c9acbecb8b1b87a9bf31c469caa0d6888a5b9384432fdba5a"}, {file = "confection-0.0.4.tar.gz", hash = "sha256:b1ddf5885da635f0e260a40b339730806dfb1bd17d30e08764f35af841b04ecf"},
] ]
[package.dependencies] [package.dependencies]
@ -842,90 +871,6 @@ files = [
docs = ["furo (>=2022.12.7)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.5)"] docs = ["furo (>=2022.12.7)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.5)"]
testing = ["covdefaults (>=2.2.2)", "coverage (>=7.0.1)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-timeout (>=2.1)"] testing = ["covdefaults (>=2.2.2)", "coverage (>=7.0.1)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-timeout (>=2.1)"]
[[package]]
name = "frozenlist"
version = "1.3.3"
description = "A list-like structure which implements collections.abc.MutableSequence"
category = "main"
optional = false
python-versions = ">=3.7"
files = [
{file = "frozenlist-1.3.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff8bf625fe85e119553b5383ba0fb6aa3d0ec2ae980295aaefa552374926b3f4"},
{file = "frozenlist-1.3.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dfbac4c2dfcc082fcf8d942d1e49b6aa0766c19d3358bd86e2000bf0fa4a9cf0"},
{file = "frozenlist-1.3.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b1c63e8d377d039ac769cd0926558bb7068a1f7abb0f003e3717ee003ad85530"},
{file = "frozenlist-1.3.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7fdfc24dcfce5b48109867c13b4cb15e4660e7bd7661741a391f821f23dfdca7"},
{file = "frozenlist-1.3.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2c926450857408e42f0bbc295e84395722ce74bae69a3b2aa2a65fe22cb14b99"},
{file = "frozenlist-1.3.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1841e200fdafc3d51f974d9d377c079a0694a8f06de2e67b48150328d66d5483"},
{file = "frozenlist-1.3.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f470c92737afa7d4c3aacc001e335062d582053d4dbe73cda126f2d7031068dd"},
{file = "frozenlist-1.3.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:783263a4eaad7c49983fe4b2e7b53fa9770c136c270d2d4bbb6d2192bf4d9caf"},
{file = "frozenlist-1.3.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:924620eef691990dfb56dc4709f280f40baee568c794b5c1885800c3ecc69816"},
{file = "frozenlist-1.3.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ae4dc05c465a08a866b7a1baf360747078b362e6a6dbeb0c57f234db0ef88ae0"},
{file = "frozenlist-1.3.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:bed331fe18f58d844d39ceb398b77d6ac0b010d571cba8267c2e7165806b00ce"},
{file = "frozenlist-1.3.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:02c9ac843e3390826a265e331105efeab489ffaf4dd86384595ee8ce6d35ae7f"},
{file = "frozenlist-1.3.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9545a33965d0d377b0bc823dcabf26980e77f1b6a7caa368a365a9497fb09420"},
{file = "frozenlist-1.3.3-cp310-cp310-win32.whl", hash = "sha256:d5cd3ab21acbdb414bb6c31958d7b06b85eeb40f66463c264a9b343a4e238642"},
{file = "frozenlist-1.3.3-cp310-cp310-win_amd64.whl", hash = "sha256:b756072364347cb6aa5b60f9bc18e94b2f79632de3b0190253ad770c5df17db1"},
{file = "frozenlist-1.3.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:b4395e2f8d83fbe0c627b2b696acce67868793d7d9750e90e39592b3626691b7"},
{file = "frozenlist-1.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:14143ae966a6229350021384870458e4777d1eae4c28d1a7aa47f24d030e6678"},
{file = "frozenlist-1.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5d8860749e813a6f65bad8285a0520607c9500caa23fea6ee407e63debcdbef6"},
{file = "frozenlist-1.3.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23d16d9f477bb55b6154654e0e74557040575d9d19fe78a161bd33d7d76808e8"},
{file = "frozenlist-1.3.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb82dbba47a8318e75f679690190c10a5e1f447fbf9df41cbc4c3afd726d88cb"},
{file = "frozenlist-1.3.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9309869032abb23d196cb4e4db574232abe8b8be1339026f489eeb34a4acfd91"},
{file = "frozenlist-1.3.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a97b4fe50b5890d36300820abd305694cb865ddb7885049587a5678215782a6b"},
{file = "frozenlist-1.3.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c188512b43542b1e91cadc3c6c915a82a5eb95929134faf7fd109f14f9892ce4"},
{file = "frozenlist-1.3.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:303e04d422e9b911a09ad499b0368dc551e8c3cd15293c99160c7f1f07b59a48"},
{file = "frozenlist-1.3.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:0771aed7f596c7d73444c847a1c16288937ef988dc04fb9f7be4b2aa91db609d"},
{file = "frozenlist-1.3.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:66080ec69883597e4d026f2f71a231a1ee9887835902dbe6b6467d5a89216cf6"},
{file = "frozenlist-1.3.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:41fe21dc74ad3a779c3d73a2786bdf622ea81234bdd4faf90b8b03cad0c2c0b4"},
{file = "frozenlist-1.3.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f20380df709d91525e4bee04746ba612a4df0972c1b8f8e1e8af997e678c7b81"},
{file = "frozenlist-1.3.3-cp311-cp311-win32.whl", hash = "sha256:f30f1928162e189091cf4d9da2eac617bfe78ef907a761614ff577ef4edfb3c8"},
{file = "frozenlist-1.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:a6394d7dadd3cfe3f4b3b186e54d5d8504d44f2d58dcc89d693698e8b7132b32"},
{file = "frozenlist-1.3.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8df3de3a9ab8325f94f646609a66cbeeede263910c5c0de0101079ad541af332"},
{file = "frozenlist-1.3.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0693c609e9742c66ba4870bcee1ad5ff35462d5ffec18710b4ac89337ff16e27"},
{file = "frozenlist-1.3.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cd4210baef299717db0a600d7a3cac81d46ef0e007f88c9335db79f8979c0d3d"},
{file = "frozenlist-1.3.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:394c9c242113bfb4b9aa36e2b80a05ffa163a30691c7b5a29eba82e937895d5e"},
{file = "frozenlist-1.3.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6327eb8e419f7d9c38f333cde41b9ae348bec26d840927332f17e887a8dcb70d"},
{file = "frozenlist-1.3.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e24900aa13212e75e5b366cb9065e78bbf3893d4baab6052d1aca10d46d944c"},
{file = "frozenlist-1.3.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:3843f84a6c465a36559161e6c59dce2f2ac10943040c2fd021cfb70d58c4ad56"},
{file = "frozenlist-1.3.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:84610c1502b2461255b4c9b7d5e9c48052601a8957cd0aea6ec7a7a1e1fb9420"},
{file = "frozenlist-1.3.3-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:c21b9aa40e08e4f63a2f92ff3748e6b6c84d717d033c7b3438dd3123ee18f70e"},
{file = "frozenlist-1.3.3-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:efce6ae830831ab6a22b9b4091d411698145cb9b8fc869e1397ccf4b4b6455cb"},
{file = "frozenlist-1.3.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:40de71985e9042ca00b7953c4f41eabc3dc514a2d1ff534027f091bc74416401"},
{file = "frozenlist-1.3.3-cp37-cp37m-win32.whl", hash = "sha256:180c00c66bde6146a860cbb81b54ee0df350d2daf13ca85b275123bbf85de18a"},
{file = "frozenlist-1.3.3-cp37-cp37m-win_amd64.whl", hash = "sha256:9bbbcedd75acdfecf2159663b87f1bb5cfc80e7cd99f7ddd9d66eb98b14a8411"},
{file = "frozenlist-1.3.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:034a5c08d36649591be1cbb10e09da9f531034acfe29275fc5454a3b101ce41a"},
{file = "frozenlist-1.3.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ba64dc2b3b7b158c6660d49cdb1d872d1d0bf4e42043ad8d5006099479a194e5"},
{file = "frozenlist-1.3.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:47df36a9fe24054b950bbc2db630d508cca3aa27ed0566c0baf661225e52c18e"},
{file = "frozenlist-1.3.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:008a054b75d77c995ea26629ab3a0c0d7281341f2fa7e1e85fa6153ae29ae99c"},
{file = "frozenlist-1.3.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:841ea19b43d438a80b4de62ac6ab21cfe6827bb8a9dc62b896acc88eaf9cecba"},
{file = "frozenlist-1.3.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e235688f42b36be2b6b06fc37ac2126a73b75fb8d6bc66dd632aa35286238703"},
{file = "frozenlist-1.3.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca713d4af15bae6e5d79b15c10c8522859a9a89d3b361a50b817c98c2fb402a2"},
{file = "frozenlist-1.3.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ac5995f2b408017b0be26d4a1d7c61bce106ff3d9e3324374d66b5964325448"},
{file = "frozenlist-1.3.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a4ae8135b11652b08a8baf07631d3ebfe65a4c87909dbef5fa0cdde440444ee4"},
{file = "frozenlist-1.3.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4ea42116ceb6bb16dbb7d526e242cb6747b08b7710d9782aa3d6732bd8d27649"},
{file = "frozenlist-1.3.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:810860bb4bdce7557bc0febb84bbd88198b9dbc2022d8eebe5b3590b2ad6c842"},
{file = "frozenlist-1.3.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:ee78feb9d293c323b59a6f2dd441b63339a30edf35abcb51187d2fc26e696d13"},
{file = "frozenlist-1.3.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0af2e7c87d35b38732e810befb9d797a99279cbb85374d42ea61c1e9d23094b3"},
{file = "frozenlist-1.3.3-cp38-cp38-win32.whl", hash = "sha256:899c5e1928eec13fd6f6d8dc51be23f0d09c5281e40d9cf4273d188d9feeaf9b"},
{file = "frozenlist-1.3.3-cp38-cp38-win_amd64.whl", hash = "sha256:7f44e24fa70f6fbc74aeec3e971f60a14dde85da364aa87f15d1be94ae75aeef"},
{file = "frozenlist-1.3.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2b07ae0c1edaa0a36339ec6cce700f51b14a3fc6545fdd32930d2c83917332cf"},
{file = "frozenlist-1.3.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ebb86518203e12e96af765ee89034a1dbb0c3c65052d1b0c19bbbd6af8a145e1"},
{file = "frozenlist-1.3.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5cf820485f1b4c91e0417ea0afd41ce5cf5965011b3c22c400f6d144296ccbc0"},
{file = "frozenlist-1.3.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c11e43016b9024240212d2a65043b70ed8dfd3b52678a1271972702d990ac6d"},
{file = "frozenlist-1.3.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8fa3c6e3305aa1146b59a09b32b2e04074945ffcfb2f0931836d103a2c38f936"},
{file = "frozenlist-1.3.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:352bd4c8c72d508778cf05ab491f6ef36149f4d0cb3c56b1b4302852255d05d5"},
{file = "frozenlist-1.3.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65a5e4d3aa679610ac6e3569e865425b23b372277f89b5ef06cf2cdaf1ebf22b"},
{file = "frozenlist-1.3.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e2c1185858d7e10ff045c496bbf90ae752c28b365fef2c09cf0fa309291669"},
{file = "frozenlist-1.3.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f163d2fd041c630fed01bc48d28c3ed4a3b003c00acd396900e11ee5316b56bb"},
{file = "frozenlist-1.3.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:05cdb16d09a0832eedf770cb7bd1fe57d8cf4eaf5aced29c4e41e3f20b30a784"},
{file = "frozenlist-1.3.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:8bae29d60768bfa8fb92244b74502b18fae55a80eac13c88eb0b496d4268fd2d"},
{file = "frozenlist-1.3.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:eedab4c310c0299961ac285591acd53dc6723a1ebd90a57207c71f6e0c2153ab"},
{file = "frozenlist-1.3.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3bbdf44855ed8f0fbcd102ef05ec3012d6a4fd7c7562403f76ce6a52aeffb2b1"},
{file = "frozenlist-1.3.3-cp39-cp39-win32.whl", hash = "sha256:efa568b885bca461f7c7b9e032655c0c143d305bf01c30caf6db2854a4532b38"},
{file = "frozenlist-1.3.3-cp39-cp39-win_amd64.whl", hash = "sha256:cfe33efc9cb900a4c46f91a5ceba26d6df370ffddd9ca386eb1d4f0ad97b9ea9"},
{file = "frozenlist-1.3.3.tar.gz", hash = "sha256:58bcc55721e8a90b88332d6cd441261ebb22342e238296bb330968952fbb3a6a"},
]
[[package]] [[package]]
name = "fsspec" name = "fsspec"
version = "2022.11.0" version = "2022.11.0"
@ -1058,14 +1003,14 @@ typing = ["types-PyYAML", "types-requests", "types-simplejson", "types-toml", "t
[[package]] [[package]]
name = "identify" name = "identify"
version = "2.5.12" version = "2.5.13"
description = "File identification library for Python" description = "File identification library for Python"
category = "dev" category = "dev"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
{file = "identify-2.5.12-py2.py3-none-any.whl", hash = "sha256:e8a400c3062d980243d27ce10455a52832205649bbcaf27ffddb3dfaaf477bad"}, {file = "identify-2.5.13-py2.py3-none-any.whl", hash = "sha256:8aa48ce56e38c28b6faa9f261075dea0a942dfbb42b341b4e711896cbb40f3f7"},
{file = "identify-2.5.12.tar.gz", hash = "sha256:0bc96b09c838310b6fcfcc61f78a981ea07f94836ef6ef553da5bb5d4745d662"}, {file = "identify-2.5.13.tar.gz", hash = "sha256:abb546bca6f470228785338a01b539de8a85bbf46491250ae03363956d8ebb10"},
] ]
[package.extras] [package.extras]
@ -1340,52 +1285,62 @@ testing = ["coverage", "pyyaml"]
[[package]] [[package]]
name = "markupsafe" name = "markupsafe"
version = "2.1.1" version = "2.1.2"
description = "Safely add untrusted strings to HTML/XML markup." description = "Safely add untrusted strings to HTML/XML markup."
category = "main" category = "main"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
{file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:665a36ae6f8f20a4676b53224e33d456a6f5a72657d9c83c2aa00765072f31f7"},
{file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"}, {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:340bea174e9761308703ae988e982005aedf427de816d1afe98147668cc03036"},
{file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"}, {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22152d00bf4a9c7c83960521fc558f55a1adbc0631fbb00a9471e097b19d72e1"},
{file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5"}, {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28057e985dace2f478e042eaa15606c7efccb700797660629da387eb289b9323"},
{file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4"}, {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca244fa73f50a800cf8c3ebf7fd93149ec37f5cb9596aa8873ae2c1d23498601"},
{file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f"}, {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d9d971ec1e79906046aa3ca266de79eac42f1dbf3612a05dc9368125952bd1a1"},
{file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e"}, {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7e007132af78ea9df29495dbf7b5824cb71648d7133cf7848a2a5dd00d36f9ff"},
{file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933"}, {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7313ce6a199651c4ed9d7e4cfb4aa56fe923b1adf9af3b420ee14e6d9a73df65"},
{file = "MarkupSafe-2.1.1-cp310-cp310-win32.whl", hash = "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6"}, {file = "MarkupSafe-2.1.2-cp310-cp310-win32.whl", hash = "sha256:c4a549890a45f57f1ebf99c067a4ad0cb423a05544accaf2b065246827ed9603"},
{file = "MarkupSafe-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417"}, {file = "MarkupSafe-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:835fb5e38fd89328e9c81067fd642b3593c33e1e17e2fdbf77f5676abb14a156"},
{file = "MarkupSafe-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02"}, {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2ec4f2d48ae59bbb9d1f9d7efb9236ab81429a764dedca114f5fdabbc3788013"},
{file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a"}, {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:608e7073dfa9e38a85d38474c082d4281f4ce276ac0010224eaba11e929dd53a"},
{file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37"}, {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65608c35bfb8a76763f37036547f7adfd09270fbdbf96608be2bead319728fcd"},
{file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980"}, {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2bfb563d0211ce16b63c7cb9395d2c682a23187f54c3d79bfec33e6705473c6"},
{file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a"}, {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da25303d91526aac3672ee6d49a2f3db2d9502a4a60b55519feb1a4c7714e07d"},
{file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3"}, {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9cad97ab29dfc3f0249b483412c85c8ef4766d96cdf9dcf5a1e3caa3f3661cf1"},
{file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a"}, {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:085fd3201e7b12809f9e6e9bc1e5c96a368c8523fad5afb02afe3c051ae4afcc"},
{file = "MarkupSafe-2.1.1-cp37-cp37m-win32.whl", hash = "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff"}, {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1bea30e9bf331f3fef67e0a3877b2288593c98a21ccb2cf29b74c581a4eb3af0"},
{file = "MarkupSafe-2.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a"}, {file = "MarkupSafe-2.1.2-cp311-cp311-win32.whl", hash = "sha256:7df70907e00c970c60b9ef2938d894a9381f38e6b9db73c5be35e59d92e06625"},
{file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452"}, {file = "MarkupSafe-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:e55e40ff0cc8cc5c07996915ad367fa47da6b3fc091fdadca7f5403239c5fec3"},
{file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003"}, {file = "MarkupSafe-2.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a6e40afa7f45939ca356f348c8e23048e02cb109ced1eb8420961b2f40fb373a"},
{file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1"}, {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf877ab4ed6e302ec1d04952ca358b381a882fbd9d1b07cccbfd61783561f98a"},
{file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601"}, {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63ba06c9941e46fa389d389644e2d8225e0e3e5ebcc4ff1ea8506dce646f8c8a"},
{file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925"}, {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1cd098434e83e656abf198f103a8207a8187c0fc110306691a2e94a78d0abb2"},
{file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f"}, {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:55f44b440d491028addb3b88f72207d71eeebfb7b5dbf0643f7c023ae1fba619"},
{file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88"}, {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a6f2fcca746e8d5910e18782f976489939d54a91f9411c32051b4aab2bd7c513"},
{file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63"}, {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0b462104ba25f1ac006fdab8b6a01ebbfbce9ed37fd37fd4acd70c67c973e460"},
{file = "MarkupSafe-2.1.1-cp38-cp38-win32.whl", hash = "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1"}, {file = "MarkupSafe-2.1.2-cp37-cp37m-win32.whl", hash = "sha256:7668b52e102d0ed87cb082380a7e2e1e78737ddecdde129acadb0eccc5423859"},
{file = "MarkupSafe-2.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"}, {file = "MarkupSafe-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6d6607f98fcf17e534162f0709aaad3ab7a96032723d8ac8750ffe17ae5a0666"},
{file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a"}, {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a806db027852538d2ad7555b203300173dd1b77ba116de92da9afbc3a3be3eed"},
{file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f"}, {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a4abaec6ca3ad8660690236d11bfe28dfd707778e2442b45addd2f086d6ef094"},
{file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6"}, {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f03a532d7dee1bed20bc4884194a16160a2de9ffc6354b3878ec9682bb623c54"},
{file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77"}, {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cf06cdc1dda95223e9d2d3c58d3b178aa5dacb35ee7e3bbac10e4e1faacb419"},
{file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603"}, {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22731d79ed2eb25059ae3df1dfc9cb1546691cc41f4e3130fe6bfbc3ecbbecfa"},
{file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7"}, {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f8ffb705ffcf5ddd0e80b65ddf7bed7ee4f5a441ea7d3419e861a12eaf41af58"},
{file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135"}, {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8db032bf0ce9022a8e41a22598eefc802314e81b879ae093f36ce9ddf39ab1ba"},
{file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96"}, {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2298c859cfc5463f1b64bd55cb3e602528db6fa0f3cfd568d3605c50678f8f03"},
{file = "MarkupSafe-2.1.1-cp39-cp39-win32.whl", hash = "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c"}, {file = "MarkupSafe-2.1.2-cp38-cp38-win32.whl", hash = "sha256:50c42830a633fa0cf9e7d27664637532791bfc31c731a87b202d2d8ac40c3ea2"},
{file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"}, {file = "MarkupSafe-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:bb06feb762bade6bf3c8b844462274db0c76acc95c52abe8dbed28ae3d44a147"},
{file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"}, {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:99625a92da8229df6d44335e6fcc558a5037dd0a760e11d84be2260e6f37002f"},
{file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8bca7e26c1dd751236cfb0c6c72d4ad61d986e9a41bbf76cb445f69488b2a2bd"},
{file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40627dcf047dadb22cd25ea7ecfe9cbf3bbbad0482ee5920b582f3809c97654f"},
{file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40dfd3fefbef579ee058f139733ac336312663c6706d1163b82b3003fb1925c4"},
{file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:090376d812fb6ac5f171e5938e82e7f2d7adc2b629101cec0db8b267815c85e2"},
{file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2e7821bffe00aa6bd07a23913b7f4e01328c3d5cc0b40b36c0bd81d362faeb65"},
{file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c0a33bc9f02c2b17c3ea382f91b4db0e6cde90b63b296422a939886a7a80de1c"},
{file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b8526c6d437855442cdd3d87eede9c425c4445ea011ca38d937db299382e6fa3"},
{file = "MarkupSafe-2.1.2-cp39-cp39-win32.whl", hash = "sha256:137678c63c977754abe9086a3ec011e8fd985ab90631145dfb9294ad09c102a7"},
{file = "MarkupSafe-2.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:0576fe974b40a400449768941d5d0858cc624e3249dfd1e0c33674e5c7ca7aed"},
{file = "MarkupSafe-2.1.2.tar.gz", hash = "sha256:abcabc8c2b26036d62d4c746381a6f7cf60aafcc653198ad678306986b09450d"},
] ]
[[package]] [[package]]
@ -1935,14 +1890,14 @@ test = ["mock", "pytest", "pytest-coverage", "typer-cli"]
[[package]] [[package]]
name = "pbr" name = "pbr"
version = "5.11.0" version = "5.11.1"
description = "Python Build Reasonableness" description = "Python Build Reasonableness"
category = "dev" category = "dev"
optional = false optional = false
python-versions = ">=2.6" python-versions = ">=2.6"
files = [ files = [
{file = "pbr-5.11.0-py2.py3-none-any.whl", hash = "sha256:db2317ff07c84c4c63648c9064a79fe9d9f5c7ce85a9099d4b6258b3db83225a"}, {file = "pbr-5.11.1-py2.py3-none-any.whl", hash = "sha256:567f09558bae2b3ab53cb3c1e2e33e726ff3338e7bae3db5dc954b3a44eef12b"},
{file = "pbr-5.11.0.tar.gz", hash = "sha256:b97bc6695b2aff02144133c2e7399d5885223d42b7912ffaec2ca3898e673bfe"}, {file = "pbr-5.11.1.tar.gz", hash = "sha256:aefc51675b0b533d56bb5fd1c8c6c0522fe31896679882e1c4c63d5e4a0fccb3"},
] ]
[[package]] [[package]]
@ -2683,19 +2638,19 @@ files = [
[[package]] [[package]]
name = "requests" name = "requests"
version = "2.28.1" version = "2.28.2"
description = "Python HTTP for Humans." description = "Python HTTP for Humans."
category = "main" category = "main"
optional = false optional = false
python-versions = ">=3.7, <4" python-versions = ">=3.7, <4"
files = [ files = [
{file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"}, {file = "requests-2.28.2-py3-none-any.whl", hash = "sha256:64299f4909223da747622c030b781c0d7811e359c37124b4bd368fb8c6518baa"},
{file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"}, {file = "requests-2.28.2.tar.gz", hash = "sha256:98b1b2782e3c6c4904938b84c0eb932721069dfdb9134313beff7c83c2df24bf"},
] ]
[package.dependencies] [package.dependencies]
certifi = ">=2017.4.17" certifi = ">=2017.4.17"
charset-normalizer = ">=2,<3" charset-normalizer = ">=2,<4"
idna = ">=2.5,<4" idna = ">=2.5,<4"
urllib3 = ">=1.21.1,<1.27" urllib3 = ">=1.21.1,<1.27"
@ -2950,18 +2905,18 @@ urllib3 = {version = ">=1.26,<2.0", extras = ["socks"]}
[[package]] [[package]]
name = "setuptools" name = "setuptools"
version = "65.6.3" version = "66.0.0"
description = "Easily download, build, install, upgrade, and uninstall Python packages" description = "Easily download, build, install, upgrade, and uninstall Python packages"
category = "main" category = "main"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
{file = "setuptools-65.6.3-py3-none-any.whl", hash = "sha256:57f6f22bde4e042978bcd50176fdb381d7c21a9efa4041202288d3737a0c6a54"}, {file = "setuptools-66.0.0-py3-none-any.whl", hash = "sha256:a78d01d1e2c175c474884671dde039962c9d74c7223db7369771fcf6e29ceeab"},
{file = "setuptools-65.6.3.tar.gz", hash = "sha256:a7620757bf984b58deaf32fc8a4577a9bbc0850cf92c20e1ce41c38c19e5fb75"}, {file = "setuptools-66.0.0.tar.gz", hash = "sha256:bd6eb2d6722568de6d14b87c44a96fac54b2a45ff5e940e639979a3d1792adb6"},
] ]
[package.extras] [package.extras]
docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"]
testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"]
testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"]
@ -3256,40 +3211,40 @@ pyahocorasick = "*"
[[package]] [[package]]
name = "thinc" name = "thinc"
version = "8.1.6" version = "8.1.7"
description = "A refreshing functional take on deep learning, compatible with your favorite libraries" description = "A refreshing functional take on deep learning, compatible with your favorite libraries"
category = "main" category = "main"
optional = false optional = false
python-versions = ">=3.6" python-versions = ">=3.6"
files = [ files = [
{file = "thinc-8.1.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a699c6d6550df4f5f6afafe3bfb0616e66f1780ab59c1aef3035e73b4da13c32"}, {file = "thinc-8.1.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1fc6de86770c202fdc247761533beb2a33d6d10eb6be60da5c752b8b41ebe9b2"},
{file = "thinc-8.1.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ffeac5cf7d45ff1951dc34a9b6ee81a5c0bc6f96c3a477ab895dc68b35fdca13"}, {file = "thinc-8.1.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c82514d36e05457d5f53dbc31c0e350b84bacb9894bc6793c0da83a8b6f6e6bb"},
{file = "thinc-8.1.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7e06adaae2f48992b942ca72b4e4278e75ee9d582b691e151271bdee6ca013c"}, {file = "thinc-8.1.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9d8a2419c938a4efe3d66b70526a41d406f0dfa24cad7103edce759e852ca9e"},
{file = "thinc-8.1.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0cee9aea2c22c297411e02ad4b058c40e3e4d6f4ad076c1667000f8f4a6a81e"}, {file = "thinc-8.1.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4d3e8ab37b8a6e2ba94b30e15c5cf24c3f0a34ac31505164a0b5f87ef434292"},
{file = "thinc-8.1.6-cp310-cp310-win_amd64.whl", hash = "sha256:8b53deac89ad1021a3fcac36b674c7809df769a5b3dcd1e14eab2fe0f3c68ab2"}, {file = "thinc-8.1.7-cp310-cp310-win_amd64.whl", hash = "sha256:9be1c9b88dad0a94feaa5751d69f51fcef4f73fa47efd0f9038530ca9ebc9c41"},
{file = "thinc-8.1.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:150a6e6b7fd7bebc9e2caab481d1d3accab8b649702820d577813e3db8681c0b"}, {file = "thinc-8.1.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ede3ba100e7bdc95ffd886b5795629c5a1ed58ddd339e37040c1d37e5cef4d0c"},
{file = "thinc-8.1.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2f3348c052e031ec701c8b36b9cc285eab061d8f2c335a0056a30e58c891583d"}, {file = "thinc-8.1.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:836916a3ea6c9f9c912d5e0935a2ce9a55791da7206c46ea6450983e96c85da7"},
{file = "thinc-8.1.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ee47c618f54b729f6a60fe7bd1961a9a78dd34dd81f6a99ebe8835cb498e557"}, {file = "thinc-8.1.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:928557f8f2401d9c38a14094dd2cd0633268ffc2a322fc33479d1a1166a6fd65"},
{file = "thinc-8.1.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:35cf8ce97ab10f2cd99bacc5e2d925ac1072d551d5ce0c24f67503cd09811a25"}, {file = "thinc-8.1.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8de6e75b135e6bf82c548530cd10805f2f814c80d68b64df3efc69820aa9b24d"},
{file = "thinc-8.1.6-cp311-cp311-win_amd64.whl", hash = "sha256:8061678c1747dd307d585b60b7be8cfd2c1d56cd20312e160226ae75639136c0"}, {file = "thinc-8.1.7-cp311-cp311-win_amd64.whl", hash = "sha256:15bea9d7d091e985f3b9217cffe1c2be5b6f014af3280ad7500d9cb1fabe7c64"},
{file = "thinc-8.1.6-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef70037c4ac5322dbf21eebe44b02eefdff6b651cc85d6a0b9ee0ca9a742e6fb"}, {file = "thinc-8.1.7-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b51e8f0fb7ae12203eaaceb7b15851305f6f9e40f1ee7ef58b083f37d046b81"},
{file = "thinc-8.1.6-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:740480d39321f9ab923576496ef4e7690a48bebc17cdb466041012d6a86d84b7"}, {file = "thinc-8.1.7-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec6837ed6d842773026f0f0775f88f1ff1c8ad84db7175bea37f5c54f5566244"},
{file = "thinc-8.1.6-cp36-cp36m-win_amd64.whl", hash = "sha256:4a92c6dca06e91960bd684d61c8eeed0d48c676ba1f8bad52f7b9ba26faa9ff3"}, {file = "thinc-8.1.7-cp36-cp36m-win_amd64.whl", hash = "sha256:169090801bba4fc34f95ed3124b7ef30693e945d86845e709909c86c5897d240"},
{file = "thinc-8.1.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0baca8b752992595a664f299d9e3146ecedeb101e468260e4eb156f3d60611dd"}, {file = "thinc-8.1.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3a5ff752edefcbf16015717e6b590ee9b30a4047d322f2520b30cc4bf14b12ef"},
{file = "thinc-8.1.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1c685e3edf0d174dc22e947db4ea9bc0034e2fc5a73fb317731c90b2b2f28d1"}, {file = "thinc-8.1.7-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a852ddca36426ca8d9d9ef08806e75b16bf9542c2a74d9b2ef7dad083f3e78b"},
{file = "thinc-8.1.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75e6139fb3f00bbc340fbf1e7ac7dcbfac8552249df34cb7807d864eebd0fa08"}, {file = "thinc-8.1.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5af1c59591b9aabf9fc43fbbfe11ed6d5a37c2fd4899429867b7c50fc346fabd"},
{file = "thinc-8.1.6-cp37-cp37m-win_amd64.whl", hash = "sha256:ebb41c1a47e72d31c9635c955a69d827cde7aadfa7369c56bba512a7d11c0c45"}, {file = "thinc-8.1.7-cp37-cp37m-win_amd64.whl", hash = "sha256:1f24fb3fd6be95adfa58d3c9e87ecdc1bca1c4759d5e02090eda1f56d762a974"},
{file = "thinc-8.1.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b6e8d59e720c1e75b1ce29be5460372f26211327e827328e8afbbe15a30f3e0f"}, {file = "thinc-8.1.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c6fa8e566e606e65f7424ac065549ac1fb5610e6da4bfb361d2dad8441995e29"},
{file = "thinc-8.1.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4f0c2842dc85c6d4e0784ea9471bfdd55c800e8269662bbf3e6ea27a5af376a6"}, {file = "thinc-8.1.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6e6ffdb5459d8c9928a816fff22c5dcdefdf3dfbc3d28a7a4bdd8bf06374cee4"},
{file = "thinc-8.1.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebab1f7618d2bf6a616ea56f2d745193307f0f3f5373c3a589ee761731bf4907"}, {file = "thinc-8.1.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b4c419f75830a57e38b0a72dae0421e23ecec7b7a49ea898cb50d79df91a261"},
{file = "thinc-8.1.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b952a6430a4e4c6f4ddc757a49612f00d207174cad16f0e3e9ab82980a4960b5"}, {file = "thinc-8.1.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a30427fbfff4e1e4233baa6da24d7a4c2eebef9c0743987ae10723ad95001caf"},
{file = "thinc-8.1.6-cp38-cp38-win_amd64.whl", hash = "sha256:dfa86f2d7f97eefa8b457a8bc857b9c3eb33c2c628710ae9ec4fe139b350db45"}, {file = "thinc-8.1.7-cp38-cp38-win_amd64.whl", hash = "sha256:8cb8d2b9a6ee900f6606ed746408b6bf4f810ded1b9ec22e4f2b9f20965a9335"},
{file = "thinc-8.1.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:540b63b74a56e565c863bf8f4e551798873fa21668d50693eb10e11de51d8530"}, {file = "thinc-8.1.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a160e386db994ab81a7094cf60b4c82bf697dabdccfca17a92251f4a8590c719"},
{file = "thinc-8.1.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b22381917e533c422285c989a9e798ca953f963476238ad988cb63732c413930"}, {file = "thinc-8.1.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5b9a61b5e0c3b331c4a2b26f779d531783097c784ef3a73f7a26fd07858efce7"},
{file = "thinc-8.1.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8eb07322ae636bcba6f90df203c00ba428437de88d700b195236fad830551cd5"}, {file = "thinc-8.1.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32a16f7527c71e4ba43b2b5be01c7b2675886ff83a80eaf5aae0f5b44ba1fa02"},
{file = "thinc-8.1.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13db03222d595f6b00091a3c8b303f11a9a82cfa529af614127bbd940c0d9de5"}, {file = "thinc-8.1.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d38c6c46f3ce34c48fc8abe8c25cdf8d9eabd5256d88dc7d77d5fcb60e8a41b6"},
{file = "thinc-8.1.6-cp39-cp39-win_amd64.whl", hash = "sha256:3693c5eeaeace5ed178070f62ca7eb8e453f269d5c83abf8b44d16e85d1433a4"}, {file = "thinc-8.1.7-cp39-cp39-win_amd64.whl", hash = "sha256:618a7942edc35d6a5ee79012c3d8f3aadbd466760ea94bc7529239b15c5c4a22"},
{file = "thinc-8.1.6.tar.gz", hash = "sha256:9241c37761f004fe684e637d2b4d8b79addebabc64e343aa1cba144fad2c9b47"}, {file = "thinc-8.1.7.tar.gz", hash = "sha256:0f08f6d1fc50e28bf18814ca2b1c807cd4d59a930d713459a675e086c4779af9"},
] ]
[package.dependencies] [package.dependencies]
@ -3668,14 +3623,14 @@ test = ["black (>=22.3.0,<23.0.0)", "coverage (>=5.2,<6.0)", "isort (>=5.0.6,<6.
[[package]] [[package]]
name = "types-requests" name = "types-requests"
version = "2.28.11.7" version = "2.28.11.8"
description = "Typing stubs for requests" description = "Typing stubs for requests"
category = "main" category = "main"
optional = false optional = false
python-versions = "*" python-versions = "*"
files = [ files = [
{file = "types-requests-2.28.11.7.tar.gz", hash = "sha256:0ae38633734990d019b80f5463dfa164ebd3581998ac8435f526da6fe4d598c3"}, {file = "types-requests-2.28.11.8.tar.gz", hash = "sha256:e67424525f84adfbeab7268a159d3c633862dafae15c5b19547ce1b55954f0a3"},
{file = "types_requests-2.28.11.7-py3-none-any.whl", hash = "sha256:b6a2fca8109f4fdba33052f11ed86102bddb2338519e1827387137fefc66a98b"}, {file = "types_requests-2.28.11.8-py3-none-any.whl", hash = "sha256:61960554baca0008ae7e2db2bd3b322ca9a144d3e80ce270f5fb640817e40994"},
] ]
[package.dependencies] [package.dependencies]
@ -3753,14 +3708,14 @@ uritools = "*"
[[package]] [[package]]
name = "urllib3" name = "urllib3"
version = "1.26.13" version = "1.26.14"
description = "HTTP library with thread-safe connection pooling, file post, and more." description = "HTTP library with thread-safe connection pooling, file post, and more."
category = "main" category = "main"
optional = false optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
files = [ files = [
{file = "urllib3-1.26.13-py2.py3-none-any.whl", hash = "sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc"}, {file = "urllib3-1.26.14-py2.py3-none-any.whl", hash = "sha256:75edcdc2f7d85b137124a6c3c9fc3933cdeaa12ecb9a6a959f22797a0feca7e1"},
{file = "urllib3-1.26.13.tar.gz", hash = "sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8"}, {file = "urllib3-1.26.14.tar.gz", hash = "sha256:076907bf8fd355cde77728471316625a4d2f7e713c125f51953bb5b3eecf4f72"},
] ]
[package.dependencies] [package.dependencies]

View File

@ -5,7 +5,7 @@ build-backend = "poetry.core.masonry.api"
[tool.poetry] [tool.poetry]
name = "internet-ml" name = "internet-ml"
version = "2.0.2" version = "0.1.0"
description = "Internet-ML: Allowing ML to connect to the internet" description = "Internet-ML: Allowing ML to connect to the internet"
readme = "./.github/README.md" readme = "./.github/README.md"
authors = ["Thamognya Kodi <contact@thamognya.com>"] authors = ["Thamognya Kodi <contact@thamognya.com>"]
@ -67,12 +67,12 @@ isort = {extras = ["colors"], version = "^5.11.4"}
mypy = "^0.991" mypy = "^0.991"
mypy-extensions = "^0.4.3" mypy-extensions = "^0.4.3"
pre-commit = "^2.21.0" pre-commit = "^2.21.0"
pydocstyle = "^6.1.1" pydocstyle = "^6.3.0"
pylint = "^2.15.9" pylint = "^2.15.10"
pytest = "^7.2.0" pytest = "^7.2.1"
pyupgrade = "^3.3.1" pyupgrade = "^3.3.1"
safety = "^2.3.5" safety = "^2.3.5"
coverage = "^7.0.1" coverage = "^7.0.5"
coverage-badge = "^1.1.0" coverage-badge = "^1.1.0"
pytest-html = "^3.2.0" pytest-html = "^3.2.0"
pytest-cov = "^4.0.0" pytest-cov = "^4.0.0"

View File

@ -1,93 +1,112 @@
accelerate==0.15.0 ; python_version >= "3.10" and python_version < "4.0" accelerate==0.15.0 ; python_version >= "3.9" and python_version < "4.0"
aiohttp==3.8.3 ; python_version >= "3.10" and python_version < "4.0" aiohttp==3.7.4.post0 ; python_version >= "3.9" and python_version < "4.0"
aiosignal==1.3.1 ; python_version >= "3.10" and python_version < "4.0" anyascii==0.3.1 ; python_version >= "3.9" and python_version < "4.0"
anyascii==0.3.1 ; python_version >= "3.10" and python_version < "4.0" async-generator==1.10 ; python_version >= "3.9" and python_version < "4.0"
async-timeout==4.0.2 ; python_version >= "3.10" and python_version < "4.0" async-timeout==3.0.1 ; python_version >= "3.9" and python_version < "4.0"
attrs==22.2.0 ; python_version >= "3.10" and python_version < "4.0" attrs==22.2.0 ; python_version >= "3.9" and python_version < "4.0"
beautifulsoup4==4.11.1 ; python_version >= "3.10" and python_version < "4.0" beautifulsoup4==4.11.1 ; python_version >= "3.9" and python_version < "4.0"
blis==0.7.9 ; python_version >= "3.10" and python_version < "4.0" blis==0.7.9 ; python_version >= "3.9" and python_version < "4.0"
catalogue==2.0.8 ; python_version >= "3.10" and python_version < "4.0" catalogue==2.0.8 ; python_version >= "3.9" and python_version < "4.0"
certifi==2022.12.7 ; python_version >= "3.10" and python_version < "4" certifi==2022.12.7 ; python_version >= "3.9" and python_version < "4"
charset-normalizer==2.1.1 ; python_version >= "3.10" and python_version < "4" cffi==1.15.1 ; os_name == "nt" and implementation_name != "pypy" and python_version >= "3.9" and python_version < "4.0"
click==8.1.3 ; python_version >= "3.10" and python_version < "4.0" chardet==4.0.0 ; python_version >= "3.9" and python_version < "4.0"
colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" charset-normalizer==3.0.1 ; python_version >= "3.9" and python_version < "4"
commonmark==0.9.1 ; python_version >= "3.10" and python_version < "4.0" click==8.1.3 ; python_version >= "3.9" and python_version < "4.0"
confection==0.0.3 ; python_version >= "3.10" and python_version < "4.0" colorama==0.4.6 ; python_version >= "3.9" and python_version < "4.0"
contractions==0.1.73 ; python_version >= "3.10" and python_version < "4.0" commonmark==0.9.1 ; python_version >= "3.9" and python_version < "4.0"
cymem==2.0.7 ; python_version >= "3.10" and python_version < "4.0" confection==0.0.4 ; python_version >= "3.9" and python_version < "4.0"
datasets==2.8.0 ; python_version >= "3.10" and python_version < "4.0" contractions==0.1.73 ; python_version >= "3.9" and python_version < "4.0"
diffusers==0.11.1 ; python_version >= "3.10" and python_version < "4.0" cssselect==1.2.0 ; python_version >= "3.9" and python_version < "4.0"
dill==0.3.6 ; python_version >= "3.10" and python_version < "4.0" cymem==2.0.7 ; python_version >= "3.9" and python_version < "4.0"
filelock==3.9.0 ; python_version >= "3.10" and python_version < "4.0" datasets==2.8.0 ; python_version >= "3.9" and python_version < "4.0"
frozenlist==1.3.3 ; python_version >= "3.10" and python_version < "4.0" diffusers==0.11.1 ; python_version >= "3.9" and python_version < "4.0"
fsspec[http]==2022.11.0 ; python_version >= "3.10" and python_version < "4.0" dill==0.3.6 ; python_version >= "3.9" and python_version < "4.0"
huggingface-hub==0.11.1 ; python_version >= "3.10" and python_version < "4.0" exceptiongroup==1.1.0 ; python_version >= "3.9" and python_version < "3.11"
idna==3.4 ; python_version >= "3.10" and python_version < "4" filelock==3.9.0 ; python_version >= "3.9" and python_version < "4.0"
importlib-metadata==6.0.0 ; python_version >= "3.10" and python_version < "4.0" fsspec[http]==2022.11.0 ; python_version >= "3.9" and python_version < "4.0"
jinja2==3.1.2 ; python_version >= "3.10" and python_version < "4.0" h11==0.14.0 ; python_version >= "3.9" and python_version < "4.0"
joblib==1.2.0 ; python_version >= "3.10" and python_version < "4.0" huggingface-hub==0.11.1 ; python_version >= "3.9" and python_version < "4.0"
langcodes==3.3.0 ; python_version >= "3.10" and python_version < "4.0" idna==3.4 ; python_version >= "3.9" and python_version < "4"
markupsafe==2.1.1 ; python_version >= "3.10" and python_version < "4.0" importlib-metadata==6.0.0 ; python_version >= "3.9" and python_version < "4.0"
multidict==6.0.4 ; python_version >= "3.10" and python_version < "4.0" jinja2==3.1.2 ; python_version >= "3.9" and python_version < "4.0"
multiprocess==0.70.14 ; python_version >= "3.10" and python_version < "4.0" joblib==1.2.0 ; python_version >= "3.9" and python_version < "4.0"
murmurhash==1.0.9 ; python_version >= "3.10" and python_version < "4.0" langcodes==3.3.0 ; python_version >= "3.9" and python_version < "4.0"
nltk==3.8.1 ; python_version >= "3.10" and python_version < "4.0" lxml==4.9.2 ; python_version >= "3.9" and python_version < "4.0"
numpy==1.24.1 ; python_version < "4.0" and python_version >= "3.10" markupsafe==2.1.2 ; python_version >= "3.9" and python_version < "4.0"
nvidia-cublas-cu11==11.10.3.66 ; python_version >= "3.10" and python_version < "4.0" and platform_system == "Linux" multidict==6.0.4 ; python_version >= "3.9" and python_version < "4.0"
nvidia-cuda-nvrtc-cu11==11.7.99 ; python_version >= "3.10" and python_version < "4.0" and platform_system == "Linux" multiprocess==0.70.14 ; python_version >= "3.9" and python_version < "4.0"
nvidia-cuda-runtime-cu11==11.7.99 ; python_version >= "3.10" and python_version < "4.0" and platform_system == "Linux" murmurhash==1.0.9 ; python_version >= "3.9" and python_version < "4.0"
nvidia-cudnn-cu11==8.5.0.96 ; python_version >= "3.10" and python_version < "4.0" and platform_system == "Linux" nltk==3.8.1 ; python_version >= "3.9" and python_version < "4.0"
openai==0.26.0 ; python_version >= "3.10" and python_version < "4.0" numpy==1.24.1 ; python_version < "4.0" and python_version >= "3.9"
packaging==21.3 ; python_version >= "3.10" and python_version < "4.0" nvidia-cublas-cu11==11.10.3.66 ; python_version >= "3.9" and python_version < "4.0" and platform_system == "Linux"
pandas==1.5.2 ; python_version >= "3.10" and python_version < "4.0" nvidia-cuda-nvrtc-cu11==11.7.99 ; python_version >= "3.9" and python_version < "4.0" and platform_system == "Linux"
pathy==0.10.1 ; python_version >= "3.10" and python_version < "4.0" nvidia-cuda-runtime-cu11==11.7.99 ; python_version >= "3.9" and python_version < "4.0" and platform_system == "Linux"
pillow==9.4.0 ; python_version >= "3.10" and python_version < "4.0" nvidia-cudnn-cu11==8.5.0.96 ; python_version >= "3.9" and python_version < "4.0" and platform_system == "Linux"
platformdirs==2.6.2 ; python_version >= "3.10" and python_version < "4.0" openai==0.26.1 ; python_version >= "3.9" and python_version < "4.0"
preshed==3.0.8 ; python_version >= "3.10" and python_version < "4.0" outcome==1.2.0 ; python_version >= "3.9" and python_version < "4.0"
psutil==5.9.4 ; python_version >= "3.10" and python_version < "4.0" packaging==21.3 ; python_version >= "3.9" and python_version < "4.0"
pyahocorasick==1.4.4 ; python_version >= "3.10" and python_version < "4.0" pandas==1.5.2 ; python_version >= "3.9" and python_version < "4.0"
pyarrow==10.0.1 ; python_version >= "3.10" and python_version < "4.0" pathy==0.10.1 ; python_version >= "3.9" and python_version < "4.0"
pydantic==1.10.4 ; python_version >= "3.10" and python_version < "4.0" pillow==9.4.0 ; python_version >= "3.9" and python_version < "4.0"
pygments==2.14.0 ; python_version >= "3.10" and python_version < "4.0" platformdirs==2.6.2 ; python_version >= "3.9" and python_version < "4.0"
pyparsing==3.0.9 ; python_version >= "3.10" and python_version < "4.0" preshed==3.0.8 ; python_version >= "3.9" and python_version < "4.0"
python-dateutil==2.8.2 ; python_version >= "3.10" and python_version < "4.0" psutil==5.9.4 ; python_version >= "3.9" and python_version < "4.0"
python-dotenv==0.21.0 ; python_version >= "3.10" and python_version < "4.0" pyahocorasick==2.0.0 ; python_version >= "3.9" and python_version < "4.0"
pytz==2022.7 ; python_version >= "3.10" and python_version < "4.0" pyarrow==10.0.1 ; python_version >= "3.9" and python_version < "4.0"
pyyaml==6.0 ; python_version >= "3.10" and python_version < "4.0" pycparser==2.21 ; os_name == "nt" and implementation_name != "pypy" and python_version >= "3.9" and python_version < "4.0"
regex==2022.10.31 ; python_version >= "3.10" and python_version < "4.0" pydantic==1.10.4 ; python_version >= "3.9" and python_version < "4.0"
requests==2.28.1 ; python_version >= "3.10" and python_version < "4" pygments==2.14.0 ; python_version >= "3.9" and python_version < "4.0"
responses==0.18.0 ; python_version >= "3.10" and python_version < "4.0" pyparsing==3.0.9 ; python_version >= "3.9" and python_version < "4.0"
rich==10.16.2 ; python_version >= "3.10" and python_version < "4.0" pysocks==1.7.1 ; python_version >= "3.9" and python_version < "4.0"
scikit-learn==1.2.0 ; python_version >= "3.10" and python_version < "4.0" python-dateutil==2.8.2 ; python_version >= "3.9" and python_version < "4.0"
scipy==1.9.3 ; python_version >= "3.10" and python_version < "4.0" python-dotenv==0.21.0 ; python_version >= "3.9" and python_version < "4.0"
setuptools==65.6.3 ; python_version >= "3.10" and python_version < "4.0" pytz==2022.7.1 ; python_version >= "3.9" and python_version < "4.0"
shellingham==1.5.0.post1 ; python_version >= "3.10" and python_version < "4.0" pyyaml==6.0 ; python_version >= "3.9" and python_version < "4.0"
six==1.16.0 ; python_version >= "3.10" and python_version < "4.0" regex==2022.10.31 ; python_version >= "3.9" and python_version < "4.0"
smart-open==6.3.0 ; python_version >= "3.10" and python_version < "4.0" requests==2.28.2 ; python_version >= "3.9" and python_version < "4"
soupsieve==2.3.2.post1 ; python_version >= "3.10" and python_version < "4.0" responses==0.18.0 ; python_version >= "3.9" and python_version < "4.0"
spacy-legacy==3.0.11 ; python_version >= "3.10" and python_version < "4.0" revchatgpt==0.1.1 ; python_version >= "3.9" and python_version < "4.0"
spacy-loggers==1.0.4 ; python_version >= "3.10" and python_version < "4.0" rich==13.1.0 ; python_version >= "3.9" and python_version < "4.0"
spacy==3.4.4 ; python_version >= "3.10" and python_version < "4.0" scikit-learn==1.2.0 ; python_version >= "3.9" and python_version < "4.0"
srsly==2.4.5 ; python_version >= "3.10" and python_version < "4.0" scipy==1.9.3 ; python_version >= "3.9" and python_version < "4.0"
textsearch==0.0.24 ; python_version >= "3.10" and python_version < "4.0" selenium==4.7.2 ; python_version >= "3.9" and python_version < "4.0"
thinc==8.1.6 ; python_version >= "3.10" and python_version < "4.0" setuptools==66.0.0 ; python_version >= "3.9" and python_version < "4.0"
threadpoolctl==3.1.0 ; python_version >= "3.10" and python_version < "4.0" shellingham==1.5.0.post1 ; python_version >= "3.9" and python_version < "4.0"
timm==0.6.12 ; python_version >= "3.10" and python_version < "4.0" six==1.16.0 ; python_version >= "3.9" and python_version < "4.0"
tokenizers==0.13.2 ; python_version >= "3.10" and python_version < "4.0" smart-open==6.3.0 ; python_version >= "3.9" and python_version < "4.0"
torch==1.13.1 ; python_version >= "3.10" and python_version < "4.0" sniffio==1.3.0 ; python_version >= "3.9" and python_version < "4.0"
torchaudio==0.13.1 ; python_version >= "3.10" and python_version < "4.0" sortedcontainers==2.4.0 ; python_version >= "3.9" and python_version < "4.0"
torchvision==0.14.1 ; python_version >= "3.10" and python_version < "4.0" soupsieve==2.3.2.post1 ; python_version >= "3.9" and python_version < "4.0"
tqdm==4.64.1 ; python_version >= "3.10" and python_version < "4.0" spacy-legacy==3.0.11 ; python_version >= "3.9" and python_version < "4.0"
typer==0.4.2 ; python_version >= "3.10" and python_version < "4.0" spacy-loggers==1.0.4 ; python_version >= "3.9" and python_version < "4.0"
typer[all]==0.4.2 ; python_version >= "3.10" and python_version < "4.0" spacy==3.4.4 ; python_version >= "3.9" and python_version < "4.0"
types-requests==2.28.11.7 ; python_version >= "3.10" and python_version < "4.0" srsly==2.4.5 ; python_version >= "3.9" and python_version < "4.0"
types-urllib3==1.26.25.4 ; python_version >= "3.10" and python_version < "4.0" textsearch==0.0.24 ; python_version >= "3.9" and python_version < "4.0"
typing-extensions==4.4.0 ; python_version >= "3.10" and python_version < "4.0" thinc==8.1.7 ; python_version >= "3.9" and python_version < "4.0"
uritools==4.0.1 ; python_version >= "3.10" and python_version < "4.0" threadpoolctl==3.1.0 ; python_version >= "3.9" and python_version < "4.0"
urlextract==1.8.0 ; python_version >= "3.10" and python_version < "4.0" timm==0.6.12 ; python_version >= "3.9" and python_version < "4.0"
urllib3==1.26.13 ; python_version >= "3.10" and python_version < "4" tls-client==0.1.8 ; python_version >= "3.9" and python_version < "4.0"
wasabi==0.10.1 ; python_version >= "3.10" and python_version < "4.0" tokenizers==0.13.2 ; python_version >= "3.9" and python_version < "4.0"
wheel==0.38.4 ; python_version >= "3.10" and python_version < "4.0" and platform_system == "Linux" torch==1.13.1 ; python_version >= "3.9" and python_version < "4.0"
xxhash==3.2.0 ; python_version >= "3.10" and python_version < "4.0" torchaudio==0.13.1 ; python_version >= "3.9" and python_version < "4.0"
yarl==1.8.2 ; python_version >= "3.10" and python_version < "4.0" torchvision==0.14.1 ; python_version >= "3.9" and python_version < "4.0"
zipp==3.11.0 ; python_version >= "3.10" and python_version < "4.0" tqdm==4.64.1 ; python_version >= "3.9" and python_version < "4.0"
trio-websocket==0.9.2 ; python_version >= "3.9" and python_version < "4.0"
trio==0.22.0 ; python_version >= "3.9" and python_version < "4.0"
typer==0.4.2 ; python_version >= "3.9" and python_version < "4.0"
typer[all]==0.4.2 ; python_version >= "3.9" and python_version < "4.0"
types-requests==2.28.11.8 ; python_version >= "3.9" and python_version < "4.0"
types-urllib3==1.26.25.4 ; python_version >= "3.9" and python_version < "4.0"
typing-extensions==4.4.0 ; python_version >= "3.9" and python_version < "4.0"
undetected-chromedriver==3.2.1 ; python_version >= "3.9" and python_version < "4.0"
uritools==4.0.1 ; python_version >= "3.9" and python_version < "4.0"
urlextract==1.8.0 ; python_version >= "3.9" and python_version < "4.0"
urllib3==1.26.14 ; python_version >= "3.9" and python_version < "4"
urllib3[socks]==1.26.14 ; python_version >= "3.9" and python_version < "4.0"
wasabi==0.10.1 ; python_version >= "3.9" and python_version < "4.0"
websockets==10.4 ; python_version >= "3.9" and python_version < "4.0"
wheel==0.38.4 ; python_version >= "3.9" and python_version < "4.0" and platform_system == "Linux"
wsproto==1.2.0 ; python_version >= "3.9" and python_version < "4.0"
xxhash==3.2.0 ; python_version >= "3.9" and python_version < "4.0"
yarl==1.8.2 ; python_version >= "3.9" and python_version < "4.0"
zipp==3.11.0 ; python_version >= "3.9" and python_version < "4.0"

View File

@ -1,3 +1,4 @@
#!/bin/sh #!/bin/sh
poetry build
poetry publish --build --username $PYPI_USERNAME --password $PYPI_PASSWORD poetry publish --build --username $PYPI_USERNAME --password $PYPI_PASSWORD